加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读