ruby-on-rails – 使用Nokogiri和Selenium,如果驱动程序无法执行
发布时间:2020-12-17 03:57:02 所属栏目:百科 来源:网络整理
导读:我正在尝试在我的网站上自动执行操作.每隔一段时间,我都希望机器人访问某些页面并单击一个元素.有时候,这个元素不存在,并且因为机器人不知道该怎么做而打破了整个事情.理想情况下,我想记录元素不存在的次数,但至少我希望机器人跳过该页面继续前进. 这是我到
我正在尝试在我的网站上自动执行操作.每隔一段时间,我都希望机器人访问某些页面并单击一个元素.有时候,这个元素不存在,并且因为机器人不知道该怎么做而打破了整个事情.理想情况下,我想记录元素不存在的次数,但至少我希望机器人跳过该页面继续前进.
这是我到目前为止所拥有的: require "selenium-webdriver" require "nokogiri" driver = Selenium::WebDriver.for :chrome wait = Selenium::WebDriver::Wait.new(:timeout => 19) User.all.each do |u| driver.navigate.to "http://website.com/" + u.name driver.find_element(:class,"like").click #THIS IS THE LINE THAT SOMETIMES FAILS end browser.close 理想情况下,取代just.find_element(:class,“like”).点击,我想要像: if element(:class,"like").exists? driver.find_element(:class,"like").click else u.error = true u.save end 那可能吗? 解决方法
在@max pleaner建议之后,您可以解除关于找不到元素的异常,然后对该信息执行某些操作.在这种情况下,您要寻找的例外是
NoSuchElementError.
代码可能如下所示: User.all.each do |u| driver.navigate.to "http://website.com/" + u.name begin driver.find_element(:class,"like").click #THIS IS THE LINE THAT SOMETIMES FAILS rescue Selenium::WebDriver::Error::NoSuchElementError u.error = true u.save end end (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |