Watir-webdriver 抛出'not clickable'错误,即使元素可见,存在



我正在尝试使用最新的Watir Webdriver 0.9.1Selenium Webdriver 2.53.0Chrome扩展2.21在Ruby中自动测试。然而,我正在测试的网站顶部有静态页眉,有时底部有静态页脚。因此,由于Watir在单击之前会自动将元素滚动到视图中,因此这些元素会隐藏在静态页眉或静态页脚下。我不想将desired_capabitlites (ElementScrollBehavior)设置为10,因为我正在测试的网站可以同时具有静态页眉或静态页脚,也可以同时具有两者。

因此,问题是:
1) 为什么Watir在元素可见且存在的情况下抛出异常Element not clickable?请参阅ruby代码(我选择了一个随机的公司网站作为示例)和下面的结果
2) 如何在不使用ElementScrollBehavior的情况下解决此问题?

Ruby代码:

require 'watir-webdriver'
browser = Watir::Browser.new :chrome
begin
  # Step 1
  browser.goto "shop.coles.com.au/online/mobile/national"
  # Step 2 - click on 'Full Website' link at the bottom
  link = browser.link(text: "Full website")
  #check if link exists, present and visible?
  puts link.exists?
  puts link.present?
  puts link.visible?
  #click on link
  link.click
rescue => e
  puts e.inspect
ensure
  sleep 5
end
puts browser.url
browser.close

结果:

$ ruby link_not_clickable.rb
true
true
true
Selenium::WebDriver::Error::UnknownError: unknown error: Element is not clickable at point (460, 1295). Other element would receive the click: div class="shoppingFooter"...div
  (Session info: chrome=50.0.2661.75)
  (Driver info: chromedriver=2.21.371459 (36d3d07f660ff2bc1bf28a75d1cdabed0983e7c4),platform=Mac OS X 10.10.5 x86_64)>
http://shop.coles.com.au/online/mobile/national

谢谢!

您可以点击任何元素而不使其可见。看看这个:

link.fire_event('click')

但是这是一个非常非常不好的决定,因为它会点击元素,即使它实际上不可见,或者在无法点击的情况下(例如,因为粘性页脚损坏)。

这就是为什么最好等待傻瓜,滚动页面,然后点击:

browser.div(id: "footerMessageArea").wait_until_present
browser.execute_script("window.scrollTo(0, document.body.scrollHeight);")
link.click

粘性页脚阻止webdriver执行单击,因此会出现"其他元素将接收到单击"的消息。

有几种不同的方法可以解决这个问题。

  1. 单击前向下滚动到页面底部
  2. 在单击任何/所有链接之前隐藏/删除粘性页脚
  3. 在执行单击之前,将注意力集中在要单击的元素下方的元素上

我想你的元素在屏幕上是可见的。

在首先点击元素之前,您必须滚动网页,使元素可见,然后执行点击。希望它能起作用。

我也遇到过类似的问题,我刚刚在watir中使用了以下javascript代码:

link = browser.link(text: "Full website")
@browser.execute_script("arguments[0].focus(); arguments[0].click();", link)

有时我不得不使用.click!我相信这就是fire_event的等价物。基本上,有些东西是分层的,你只需要绕过前端的混乱。

相关内容

  • 没有找到相关文章

最新更新