我的 .click 方法有时只有效,有时会出错
My .click method only works sometimes then gives an error other times
我正在使用 Capybara 抓取网站,其中一个操作是单击按钮。有时水豚点击它,有时会出现此错误
/Users/maximushan/.rvm/gems/ruby-2.4.2/gems/poltergeist-1.18.1/lib/capybara/poltergeist/node.rb:25:in `rescue in command': Firing a click at co-ordinates [632.5, 546.5] failed. Poltergeist detected another element with CSS selector 'html body.ab_test_B.not_sem.not_from_partner.not_mobile.is_desktop.f-topbar-fixed.lazy-load div.autocomplete-suggestions div.autocomplete-suggestion' at this position. It may be overlapping the element you are trying to interact with. If you don't care about overlapping elements, try using node.trigger('click'). (Capybara::Poltergeist::MouseEventFailed)
我试过的两种点击方式是
.find(:button, 'js-emu-submit').click
.click_on 'js-emu-submit'
我不太确定为什么它们有时工作但有时会中断。
您收到的错误消息是不言自明的,另一个元素位于您尝试单击的元素之上。从显示的另一个元素 'html body.ab_test_B.not_sem.not_from_partner.not_mobile.is_desktop.f-topbar-fixed.lazy-load div.autocomplete-suggestions div.autocomplete-suggestion'
的选择器中,我们可以假设它是您正在向其中填写信息的自动完成框中的建议。这意味着有几种可能性
如果有足够的时间,此框将消失,然后让您尝试单击的元素保持可单击状态。在那种情况下,检查该框是否消失
expect(page).not_to have_css('div.autocomplete-suggestion') # RSpec
# page.assert_no_css('div.autocomplete-suggestion') # minitest
page.click_button('js_emu_submit')
您正在自动提示框中填写数据,该框显示多个匹配选项,在这种情况下,下拉列表不会消失。在这种情况下,您需要做用户在这种情况下会做的任何事情(可能点击匹配的自动完成建议),例如
page.find('div.autocomplete-suggestion', exact_text: 'whatever you want to select').click
expect(page).not_to have_css('div.autocomplete-suggestion')
page.click_button('js_emu_submit')
如果您使用的是最新版本的 Capybara,那么它更有可能是第 2 个版本,因为最新版本会在点击被阻止时尝试重新点击。对于旧版本的 Capybara,它可能是。
我正在使用 Capybara 抓取网站,其中一个操作是单击按钮。有时水豚点击它,有时会出现此错误
/Users/maximushan/.rvm/gems/ruby-2.4.2/gems/poltergeist-1.18.1/lib/capybara/poltergeist/node.rb:25:in `rescue in command': Firing a click at co-ordinates [632.5, 546.5] failed. Poltergeist detected another element with CSS selector 'html body.ab_test_B.not_sem.not_from_partner.not_mobile.is_desktop.f-topbar-fixed.lazy-load div.autocomplete-suggestions div.autocomplete-suggestion' at this position. It may be overlapping the element you are trying to interact with. If you don't care about overlapping elements, try using node.trigger('click'). (Capybara::Poltergeist::MouseEventFailed)
我试过的两种点击方式是
.find(:button, 'js-emu-submit').click
.click_on 'js-emu-submit'
我不太确定为什么它们有时工作但有时会中断。
您收到的错误消息是不言自明的,另一个元素位于您尝试单击的元素之上。从显示的另一个元素 'html body.ab_test_B.not_sem.not_from_partner.not_mobile.is_desktop.f-topbar-fixed.lazy-load div.autocomplete-suggestions div.autocomplete-suggestion'
的选择器中,我们可以假设它是您正在向其中填写信息的自动完成框中的建议。这意味着有几种可能性
如果有足够的时间,此框将消失,然后让您尝试单击的元素保持可单击状态。在那种情况下,检查该框是否消失
expect(page).not_to have_css('div.autocomplete-suggestion') # RSpec # page.assert_no_css('div.autocomplete-suggestion') # minitest page.click_button('js_emu_submit')
您正在自动提示框中填写数据,该框显示多个匹配选项,在这种情况下,下拉列表不会消失。在这种情况下,您需要做用户在这种情况下会做的任何事情(可能点击匹配的自动完成建议),例如
page.find('div.autocomplete-suggestion', exact_text: 'whatever you want to select').click expect(page).not_to have_css('div.autocomplete-suggestion') page.click_button('js_emu_submit')
如果您使用的是最新版本的 Capybara,那么它更有可能是第 2 个版本,因为最新版本会在点击被阻止时尝试重新点击。对于旧版本的 Capybara,它可能是。