【发布时间】:2018-09-30 02:32:07
【问题描述】:
我正在编写一个 UI 测试,它会转到文章列表并选择 load_more 按钮,直到该按钮不再可用(因为所有文章都已加载)。问题是该按钮此时已被隐藏而不是被删除,并且正在返回此错误
Selenium::WebDriver::Error::UnknownError: unknown error: Element <div
class="">...</div> is not clickable at point (x, y). Other element
would receive the click: <div class="" id="" data-module-name="">...
</div>
(Session info: chrome=65.0.3325.181)
(Driver info: chromedriver=2.36.540469
ruby-2.5.1/gems/selenium-webdriver
3.11.0/lib/selenium/webdriver/remote/response.rb:69:in `assert_ok'
我已经尝试了几种循环类型,但为此,如果我们假设我正在使用
while world.page.has_load_more?
world.page.load_more.click
break if world.page.has_load_more? == false
end
问题是我如何告诉 Selenium 这没问题并且不会出错,所以我可以继续我的测试用例(黄瓜)中的下一步。我意识到循环类型的选择也可能不正确,因此也可以随意提出更改建议。
【问题讨论】:
-
不,您的假设是错误的,当按钮被隐藏时不会发生此错误,而是会在按钮被其他元素覆盖时发生。
-
谢谢 - 应该更清楚。我的意思是隐藏在隐藏/不可见
-
你的不可见性对 selenium 来说是不可见的,如果元素出现在页面的底部,它对你来说是不可见的,但它对 selenium 不是不可见的,当元素存在时,selenium 认为某些东西是不可见的,但它仍然是隐藏的,但无论如何你的错误是不可见的!如果它是不可见的,那么它会抛出错误
element is invisible -
感谢您提供详细信息
-
如果你仍然想点击,你可以在你的 selenium 代码中注入 JavaScript,它不会做任何检查,但你会失去对隐式等待的控制。
标签: ruby rspec cucumber capybara selenium-chromedriver