【问题标题】:webdriver.get() raise TimeoutExceptionwebdriver.get() 引发 TimeoutException
【发布时间】:2020-01-17 09:46:59
【问题描述】:

我每天将 selenium 与 celery 和 mitmproxy 结合使用来扫描来自多个网站的 cookie。 昨天我的应用程序由于以下异常而崩溃:

Traceback (most recent call last):
  File "/usr/local/lib/python3.7/dist-packages/celery/app/trace.py", line 385, in trace_task
    R = retval = fun(*args, **kwargs)
  File "/usr/local/lib/python3.7/dist-packages/celery/app/trace.py", line 648, in __protected_call__
    return self.run(*args, **kwargs)
  File "/home/myapplication/myapplication/api/tasks.py", line 24, in scan_periodically
    x.startscanner(executor=Scan.PERIODICALLY)
  File "/home/myapplication/myapplication/api/scanner.py", line 204, in startscanner
    self.browser_list[self.browser_list_place].get(self.website.url)
  File "/home/myapplication/.local/lib/python3.7/site-packages/selenium/webdriver/remote/webdriver.py", line 333, in get
    self.execute(Command.GET, {'url': url})
  File "/home/myapplication/.local/lib/python3.7/site-packages/selenium/webdriver/remote/webdriver.py", line 321, in execute
    self.error_handler.check_response(response)
  File "/home/myapplication/.local/lib/python3.7/site-packages/selenium/webdriver/remote/errorhandler.py", line 242, in check_response
    raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.TimeoutException: Message: timeout
  (Session info: headless chrome=76.0.3809.100)

我使用 selenium 的 python api 和 python 版本 3.7.3、selenium api 版本 3.141.0 和 Google Chrome 76.0.3809.100 和 chromedriver 版本 76.0.3809.68。

为什么 webdriver get() 方法会引发 TimeoutException?

【问题讨论】:

  • 你的网址有效吗??
  • 是的,这是一个有效的网址。
  • 你能把它贴出来检查一下吗?也试试我的超时回答
  • get(self.website.url) 类似于什么?
  • @Wonka 不抱歉,网址是保密的。

标签: python selenium selenium-webdriver selenium-chromedriver


【解决方案1】:

试试这个参数来避免/覆盖超时,我在我的 selenium 库中找到了它们

import socket
from selenium.common.exceptions import TimeoutException

#Init your browser, then
#...

socket.setdefaulttimeout(int(60))

your_browser_driver.set_page_load_timeout(60)

【讨论】:

  • 为什么需要import socket :)
  • @DebanjanB 我在一两年前做过,我在 driver.get() 上得到了这个异常“socket.timeout”,所以我假设 selenium 正在使用套接字并从一些 stackoverflow 解决方案中得到它
  • 我认为这无济于事,因为我的例外与您的不同。我无法尝试您的解决方案,因为异常不会总是触发。偶尔会触发异常。
猜你喜欢
  • 2023-04-03
  • 1970-01-01
  • 2011-07-22
  • 1970-01-01
  • 2022-10-13
  • 1970-01-01
  • 2022-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多