访问多个url时使用webdriver.get()方法时TimedPromise超时

2024-09-30 16:36:14 发布

您现在位置:Python中文网/ 问答频道 /正文

设置:

  • Selenium版本:3.141.0
  • Mozilla:90.0.2(64位)
  • 壁虎河:0.29.1

我很难理解为什么我会出现这个错误,如果有任何帮助,我将不胜感激。我正在浏览一个使用selenium Python的无头浏览器(Firefox)访问的网站列表。它一开始运行正常,但随后在driver.get方法中随机出现超时错误。回溯:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/Users/blujay95/projects/crawler/extract.py", line 333, in get_product_page_data
    self.browser.get_url(full_url)
  File "/Users/blujay95/projects/crawler/requestor.py", line 83, in get_url
    
  File "/Users/blujay95/.pyenv/versions/dora-3.8.7/lib/python3.8/site-packages/selenium/webdriver/remote/webdriver.py", line 333, in get
    self.execute(Command.GET, {'url': url})
  File "/Users/blujay95/.pyenv/versions/dora-3.8.7/lib/python3.8/site-packages/selenium/webdriver/remote/webdriver.py", line 321, in execute
    self.error_handler.check_response(response)
  File "/Users/blujay95/.pyenv/versions/dora-3.8.7/lib/python3.8/site-packages/selenium/webdriver/remote/errorhandler.py", line 242, in check_response
    raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.TimeoutException: Message: TimedPromise timed out after 300000 ms

此时,我必须退出当前的驱动程序对象,启动一个新的驱动程序对象,然后继续访问url列表。过了一段时间,它又遇到了这个问题

希望获得有关如何诊断此问题的任何帮助

添加一个代码片段,在循环浏览要访问的网站列表时调用该代码片段。请求者对象是webdriver对象

class exampleObject:

    ...

    def start(self):
        if self.method == 'SELENIUM':
            options = webdriver.FirefoxOptions()
            options.headless = False
            options.add_argument("user-agent=Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.125 Safari/537.36")
            self.requestor = webdriver.Firefox(options=options)


    def get_url(self, url):
        self.response = self.requestor.get(url)
        time.sleep(3)


Tags: 对象inpyselfurl列表getresponse