gpt4 book ai didi

Ruby : Watir : 如何避免从 Net::ReadTimeout 关闭浏览器?

转载 作者:行者123 更新时间:2023-12-01 15:00:09 27 4
gpt4 key购买 nike

我正在使用 Watir 制作一个自动化程序,它从文件 links.txt 中读取链接,然后在 chrome 浏览器上一个一个打开。当打开浏览器及其加载时间需要很长时间时,它会显示 Net::ReadTimeout。我已尝试营救,如果未获救,请转到列表中的下一个链接。

我试过这个,但是当 max_retries = 3 时,它再次显示错误。我想让浏览器等待特定的时间,然后如果它仍在加载,请关闭浏览器并转到列表中的下一个链接

   file='links.txt'
max_retries = 3
times_retried = 0
n = 0

begin
browser = Watir::Browser.new :chrome
Watir.default_timeout = 1000
rescue Net::ReadTimeout
browser.wait
retry
end

line = File.readlines(file).sample

while n <= 50 do
n+=1
begin
browser.goto "#{line}"
rescue Net::ReadTimeout => error
if times_retried < max_retries
times_retried += 1
puts "Failed to load page, retry #{times_retried}/#{max_retries}"
retry
else
puts "Exiting script. Timeout Loading Page"
exit(1)
end
end
break if n == 50
end

最佳答案

您必须增加页面加载超时,默认等待时间为 60 秒,但您可以通过以下代码增加页面加载超时

client = Selenium::WebDriver::Remote::Http::Default.new
client.read_timeout = 120 # seconds
driver = Selenium::WebDriver.for :chrome,http_client: client
b=Watir::Browser.new driver

现在您的代码将等待 120 秒以等待由 #click 引起的任何页面加载,并等待通过 goto 方法加载 url。

关于Ruby : Watir : 如何避免从 Net::ReadTimeout 关闭浏览器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59731079/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com