Ruby: Watir: Как избежать закрытия браузера из Net :: ReadTimeout? - PullRequest
3 голосов
/ 14 января 2020

Я делаю программу автоматизации с использованием Watir, которая читает ссылки из файла links.txt и затем открывает их по одной в браузере chrome. Когда требуется много времени, чтобы открыть браузер и время загрузки, он показывает Net::ReadTimeout. Я пытался спасти, и если он не спас go к следующей ссылке из списка.

Я пробовал это, но когда max_retries = 3, он снова показывает ошибку. Я хочу заставить браузер ждать определенное количество времени c, а затем, если он все еще загружается, закрыть браузер и go перейти к следующей ссылке из списка

   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

Ответы [ 2 ]

0 голосов
/ 30 января 2020

Это старый вопрос, но, возможно, это кому-то поможет:

client = Selenium::WebDriver::Remote::Http::Default.new
client.timeout = 600 # instead of the default 60 (seconds)
Watir::Browser.new :chrome, http_client: client
0 голосов
/ 14 января 2020

Вы должны увеличить время загрузки страницы, оно ожидает по умолчанию 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, а также ожидание загрузки URL методом goto.

...