【发布时间】:2018-11-11 16:08:36
【问题描述】:
据我了解,由于使用 Selenium Webdriver 和 Chromedriver 实现点击事件的方式,这个问题仅在使用 Chrome 浏览器执行 Web 测试自动化时才真正相关。作为序言,我使用并且知道通过使用 Watir 元素函数“present?”来查找元素,据我所知,它本质上是“visible?”的组合。和“存在?”。我还可以在需要时找到一个具有 Webdriver 元素功能的元素,以识别一个元素是否存在,如果不存在则对异常进行救援。我要确定的是以下内容:
有时,由于缺乏对页面的响应能力,可能会找到一些页面元素并通过所有验证测试以确认其存在,但由于上述缺乏页面响应能力而无法实际与之交互。使用 Chrome 浏览器(带有 Chromedriver)尝试与这些元素交互将导致错误:
irb(main):003:0> @browser.button(:id, "button_login").present? => 真的 irb(main):004:0> @browser.button(:id, "button_login").click Selenium::WebDriver::Error::UnknownError: 未知错误: 元素 ... 在点 (915, nt 会收到点击:
...
(会话信息:chrome=66.0.3359.181) (驱动程序信息:chromedriver=2.38.552522 (437e6fbedfa8762dec75e2c5b3ddb86763dc9dcb),平台=Windows NT 6.3.9600 x86_64) 来自 C:/Ruby23/lib/ruby/gems/2.3.0/gems/selenium-webdriver-3.4.4/lib/selenium/webdriver/remote/response.rb:69:in 'assert_ok' 来自 C:/Ruby23/lib/ruby/gems/2.3.0/gems/selenium-webdriver-3.4.4/lib/selenium/webdriver/remote/response.rb:32:in 'initialize' 来自 C:/Ruby23/lib/ruby/gems/2.3.0/gems/selenium-webdriver-3.4.4/lib/selenium/webdriver/remote/http/common.rb:83:in 'new' 来自 C:/Ruby23/lib/ruby/gems/2.3.0/gems/selenium-webdriver-3.4.4/lib/selenium/webdriver/remote/http/common.rb:83:in 'create_response' 来自 C:/Ruby23/lib/ruby/gems/2.3.0/gems/selenium-webdriver-3.4.4/lib/selenium/webdriver/remote/http/default.rb:107:in 'request' 来自 C:/Ruby23/lib/ruby/gems/2.3.0/gems/selenium-webdriver-3.4.4/lib/selenium/webdriver/remote/http/common.rb:61:in 'call' 来自 C:/Ruby23/lib/ruby/gems/2.3.0/gems/selenium-webdriver-3.4.4/lib/selenium/webdriver/remote/bridge.rb:170:in 'execute' 来自 C:/Ruby23/lib/ruby/gems/2.3.0/gems/selenium-webdriver-3.4.4/lib/selenium/webdriver/remote/oss/bridge.rb:579:in 'execute' 来自 C:/Ruby23/lib/ruby/gems/2.3.0/gems/selenium-webdriver-3.4.4/lib/selenium/webdriver/remote/oss/bridge.rb:328:in 'click_element' 来自 C:/Ruby23/lib/ruby/gems/2.3.0/gems/selenium-webdriver-3.4.4/lib/selenium/webdriver/common/element.rb:74:in 'click' 来自 C:/Ruby23/lib/ruby/gems/2.3.0/gems/watir-6.4.1/lib/watir/elements/element.rb:131:in 'block in click' 来自 C:/Ruby23/lib/ruby/gems/2.3.0/gems/watir-6.4.1/lib/watir/elements/element.rb:656:in 'element_call' 来自 C:/Ruby23/lib/ruby/gems/2.3.0/gems/watir-6.4.1/lib/watir/elements/element.rb:122:in 'click' 来自 (irb):4 来自 C:/Ruby23/bin/irb.cmd:19:in ''
我知道此时我可以进行救援,但这需要我实际单击该元素。本质上我想写一个特殊的功能“可点击?”这将返回布尔输出,而无需实际单击元素并可能离开页面。我不希望使用 --ctrl+click 类型尝试此操作,如果新窗口返回 true,则关闭窗口,将焦点设置在第一个窗口上,救援返回 false - 工作流。
【问题讨论】:
标签: ruby selenium-webdriver selenium-chromedriver watir