Selenium chromedriver 2.25 超时异常无法确定加载状态

14

我正在Mac OS上使用Python3,并且已经将Chrome浏览器ChromedriverSelenium更新到最新版本。但是我遇到了TimeoutException问题,浏览器可以正确打开但却一直处于冻结状态。

>>> from selenium import webdriver
>>> driver = webdriver.Chrome()
# opens browser with blank page
>>> driver.get('http://example.com')
# gets first page OK and then driver literally flashes once
>>> driver.get('http://stackoverflow.com')
>>>
# Cursor loading forever... until TimeoutException

会抛出此错误:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/local/lib/python3.5/site-packages/selenium/webdriver/remote/webdriver.py", line 248, in get
    self.execute(Command.GET, {'url': url})
  File "/usr/local/lib/python3.5/site-packages/selenium/webdriver/remote/webdriver.py", line 236, in execute
    self.error_handler.check_response(response)
  File "/usr/local/lib/python3.5/site-packages/selenium/webdriver/remote/errorhandler.py", line 192, in check_response
    raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.TimeoutException: Message: timeout: cannot determine loading status
from timeout: Timed out receiving message from renderer: -0.003
  (Session info: chrome=54.0.2840.71)
  (Driver info: chromedriver=2.25.426935 (820a95b0b81d33e42712f9198c215f703412e1a1),platform=Mac OS X 10.12.0 x86_64)

我正在使用:Python 3.5.2Chrome 54.0chromedriver 2.25selenium 3.0.1

我尝试过其他版本的chromedriver,但没有成功,而且我在网上也没有找到任何解决方法。谢谢。

编辑:

我仍然收到上述错误信息,并且出现了一个新错误:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/local/lib/python3.5/site-packages/selenium/webdriver/chrome/webdriver.py", line 69, in __init__
    desired_capabilities=desired_capabilities)
  File "/usr/local/lib/python3.5/site-packages/selenium/webdriver/remote/webdriver.py", line 92, in __init__
    self.start_session(desired_capabilities, browser_profile)
  File "/usr/local/lib/python3.5/site-packages/selenium/webdriver/remote/webdriver.py", line 179, in start_session
    response = self.execute(Command.NEW_SESSION, capabilities)
  File "/usr/local/lib/python3.5/site-packages/selenium/webdriver/remote/webdriver.py", line 236, in execute
    self.error_handler.check_response(response)
  File "/usr/local/lib/python3.5/site-packages/selenium/webdriver/remote/errorhandler.py", line 192, in check_response
    raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.WebDriverException: Message: session not created exception
from unknown error: bad inspector message: {"method":"Page.loadEventFired","params":{"timestamp":14220,088073}}
  (Session info: chrome=54.0.2840.71)
  (Driver info: chromedriver=2.25.426935 (820a95b0b81d33e42712f9198c215f703412e1a1),platform=Mac OS X 10.12.0 x86_64)

增加页面加载时间对我很有帮助。driver.Manage().Timeouts().SetPageLoadTimeout(TimeSpan.FromSeconds(60)); - Morvader
2个回答

11

selenium.common.exceptions.TimeoutException: Message: timeout: cannot determine loading status from timeout: Timed out receiving message from renderer: -0.003

Issue817:看起来这个问题已经被记录为Selenium的一个错误

有人回答说可以通过使用chrome的--dns-prefetch-disable选项来消除此问题。

from selenium.webdriver import Chrome
from selenium.webdriver.chrome.options import Options

chrome_options = Options()
chrome_options.add_argument('--dns-prefetch-disable')
driver = Chrome(chrome_options=chrome_options)

如果问题仍然存在,可以关注这个线程,也许它可以解决您的问题


使用“--dns-prefetch-disable”对我来说并没有解决问题。驱动程序的参数已经正确创建,但在下一个命令中,webdriver挂起页面加载,并且不会将控制权交还给脚本执行。 - RMM
1
对于最后一行,你的意思是写成 driver = Chrome(chrome_options=chrome_options) - rjurney

0

我不明白这如何有所帮助。 - Matt Westlake

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接