Joe*_*ano 4 ruby selenium bots ruby-on-rails nokogiri
我正在尝试在我的网站上自动执行操作.每隔一段时间,我都希望机器人访问某些页面并单击一个元素.有时,这个元素不在那里,并且因为机器人不知道该怎么做而打破了整个事情.理想情况下,我想记录元素不存在的次数,但至少我希望机器人跳过该页面继续前进.
这是我到目前为止所拥有的:
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
Run Code Online (Sandbox Code Playgroud)
理想情况下,取而代之的是driver.find_element(:class, "like").click,我喜欢以下内容:
if element(:class, "like").exists?
driver.find_element(:class, "like").click
else
u.error = true
u.save
end
Run Code Online (Sandbox Code Playgroud)
那可能吗?
在@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
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
461 次 |
| 最近记录: |