【发布时间】:2022-01-11 06:38:09
【问题描述】:
查看网页上的动态元素时,如果该元素不存在,Selenium 会崩溃。结果,我不得不拯救应用程序才能继续。我想我的语法有问题
response = driver.find_element(:class, element).text
如果未找到该元素,Selenium 会出错并使应用程序崩溃。无论我的浏览器配置如何,都会发生这种情况。
【问题讨论】:
标签: ruby selenium selenium-webdriver
查看网页上的动态元素时,如果该元素不存在,Selenium 会崩溃。结果,我不得不拯救应用程序才能继续。我想我的语法有问题
response = driver.find_element(:class, element).text
如果未找到该元素,Selenium 会出错并使应用程序崩溃。无论我的浏览器配置如何,都会发生这种情况。
【问题讨论】:
标签: ruby selenium selenium-webdriver
Selenium 没有崩溃。您的代码遇到了异常情况(尝试使用不存在的元素)。代码通过引发NoSuchElementError 正确响应该异常情况。
如果您试图确定某个元素是否存在,您可以使用Driver#find_elements 并检查Array#size 是否等于0。
如果您尝试使用页面上尚未出现的元素,则需要创建显式等待以轮询该元素以显示在 DebanjanB 的答案中。
【讨论】:
您需要稍等片刻让元素变为visible,然后再尝试按如下方式定位它:
wait = Selenium::WebDriver::Wait.new(:timeout => 10)
ele = wait.until { driver.find_element(:class, element).displayed? }
response = ele.text
【讨论】:
wait.until { driver.find_element(:class, element).displayed? }
NoSuchElementError。 github.com/SeleniumHQ/selenium/blob/trunk/rb/lib/selenium/…