Python3 Selenium Webdriver 在初始化期间超时
Python3 Selenium Webdriver times out during initialization
以下脚本:
from selenium import webdriver
wd = webdriver.Firefox()
或
from selenium import webdriver
wd = webdriver.Chrome()
在我的 Windows 7 机器上几乎总是失败,产生以下堆栈跟踪:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "C:\Users\username\AppData\Local\Programs\Python\Python36-32\lib\site-packages\selenium\webdriver\firefox\webdriver.py", line 152, in __init__
keep_alive=True)
File "C:\Users\username\AppData\Local\Programs\Python\Python36-32\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 98, in __init__
self.start_session(desired_capabilities, browser_profile)
File "C:\Users\username\AppData\Local\Programs\Python\Python36-32\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 188, in start_session
response = self.execute(Command.NEW_SESSION, parameters)
File "C:\Users\username\AppData\Local\Programs\Python\Python36-32\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 254, in execute
response = self.command_executor.execute(driver_command, params)
File "C:\Users\username\AppData\Local\Programs\Python\Python36-32\lib\site-packages\selenium\webdriver\remote\remote_connection.py", line 464, in execute
return self._request(command_info[0], url, body=data)
File "C:\Users\username\AppData\Local\Programs\Python\Python36-32\lib\site-packages\selenium\webdriver\remote\remote_connection.py", line 488, in _request
resp = self._conn.getresponse()
File "C:\Users\username\AppData\Local\Programs\Python\Python36-32\lib\http\client.py", line 1334, in getresponse
response.begin()
File "C:\Users\username\AppData\Local\Programs\Python\Python36-32\lib\http\client.py", line 300, in begin
version, status, reason = self._read_status()
File "C:\Users\username\AppData\Local\Programs\Python\Python36-32\lib\http\client.py", line 260, in _read_status
line_tmp = self.fp.readline(_MAXLINE + 1)
File "C:\Users\username\AppData\Local\Programs\Python\Python36-32\lib\socket.py", line 586, in readinto
return self._sock.recv_into(b)
socket.timeout: timed out
Chrome 也一样(除了 ...\webdriver\chrome\webdriver.py,很明显)。这种行为是非常一致的,尽管在极少数情况下重新尝试在同一个 Python 会话中打开网络驱动程序将允许 Selenium 成功打开浏览器,并且(据我所知)从那里正确运行出来了。
在我的 Linux 机器上没有观察到这种行为,它在同一网络上;任何打开网络驱动程序的尝试都可以正常工作。
我很困惑,我通过 Google 发现的所有套接字超时问题都与尝试访问网页有关,而不仅仅是创建新的 webdriver 对象。我可以提供解决此问题所需的任何其他信息。
这是您问题的答案 -
当您使用 Selenium 3.4.3
、chromedriver v2.30
、geckodriver v0.17.0
、Google Chrome 59.0
和 Mozilla Firefox 53.0
到 Python 3.6.1
时,您可以考虑以下选项:
Chrome :
要初始化 chromedriver
,您可以考虑通过 executable_path
参数提及 chromedriver
的绝对路径,另外 specify/use chrome_options
参数来配置所需的浏览器属性,如下所示:
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
options = Options()
options.add_argument("start-maximized")
options.add_argument("disable-infobars")
options.add_argument("--disable-extensions")
driver = webdriver.Chrome(chrome_options=options, executable_path="C:\Utility\BrowserDrivers\chromedriver.exe")
driver.get("https://www.google.co.in")
火狐浏览器:
要初始化 geckodriver
,您可以考虑通过 executable_path
参数提及 geckodriver
的绝对路径,另外 specify/use firefox_binary
参数来配置所需的浏览器,如下所示:
from selenium import webdriver
from selenium.webdriver.firefox.firefox_binary import FirefoxBinary
from selenium.webdriver.common.desired_capabilities import DesiredCapabilities
binary = FirefoxBinary('C:\Program Files\Mozilla Firefox\firefox.exe')
caps = DesiredCapabilities().FIREFOX
driver = webdriver.Firefox(firefox_binary=binary, executable_path="C:\Utility\BrowserDrivers\geckodriver.exe")
driver.get('https://whosebug.com')
如果这回答了您的问题,请告诉我。
以下脚本:
from selenium import webdriver
wd = webdriver.Firefox()
或
from selenium import webdriver
wd = webdriver.Chrome()
在我的 Windows 7 机器上几乎总是失败,产生以下堆栈跟踪:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "C:\Users\username\AppData\Local\Programs\Python\Python36-32\lib\site-packages\selenium\webdriver\firefox\webdriver.py", line 152, in __init__
keep_alive=True)
File "C:\Users\username\AppData\Local\Programs\Python\Python36-32\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 98, in __init__
self.start_session(desired_capabilities, browser_profile)
File "C:\Users\username\AppData\Local\Programs\Python\Python36-32\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 188, in start_session
response = self.execute(Command.NEW_SESSION, parameters)
File "C:\Users\username\AppData\Local\Programs\Python\Python36-32\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 254, in execute
response = self.command_executor.execute(driver_command, params)
File "C:\Users\username\AppData\Local\Programs\Python\Python36-32\lib\site-packages\selenium\webdriver\remote\remote_connection.py", line 464, in execute
return self._request(command_info[0], url, body=data)
File "C:\Users\username\AppData\Local\Programs\Python\Python36-32\lib\site-packages\selenium\webdriver\remote\remote_connection.py", line 488, in _request
resp = self._conn.getresponse()
File "C:\Users\username\AppData\Local\Programs\Python\Python36-32\lib\http\client.py", line 1334, in getresponse
response.begin()
File "C:\Users\username\AppData\Local\Programs\Python\Python36-32\lib\http\client.py", line 300, in begin
version, status, reason = self._read_status()
File "C:\Users\username\AppData\Local\Programs\Python\Python36-32\lib\http\client.py", line 260, in _read_status
line_tmp = self.fp.readline(_MAXLINE + 1)
File "C:\Users\username\AppData\Local\Programs\Python\Python36-32\lib\socket.py", line 586, in readinto
return self._sock.recv_into(b)
socket.timeout: timed out
Chrome 也一样(除了 ...\webdriver\chrome\webdriver.py,很明显)。这种行为是非常一致的,尽管在极少数情况下重新尝试在同一个 Python 会话中打开网络驱动程序将允许 Selenium 成功打开浏览器,并且(据我所知)从那里正确运行出来了。
在我的 Linux 机器上没有观察到这种行为,它在同一网络上;任何打开网络驱动程序的尝试都可以正常工作。
我很困惑,我通过 Google 发现的所有套接字超时问题都与尝试访问网页有关,而不仅仅是创建新的 webdriver 对象。我可以提供解决此问题所需的任何其他信息。
这是您问题的答案 -
当您使用 Selenium 3.4.3
、chromedriver v2.30
、geckodriver v0.17.0
、Google Chrome 59.0
和 Mozilla Firefox 53.0
到 Python 3.6.1
时,您可以考虑以下选项:
Chrome :
要初始化 chromedriver
,您可以考虑通过 executable_path
参数提及 chromedriver
的绝对路径,另外 specify/use chrome_options
参数来配置所需的浏览器属性,如下所示:
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
options = Options()
options.add_argument("start-maximized")
options.add_argument("disable-infobars")
options.add_argument("--disable-extensions")
driver = webdriver.Chrome(chrome_options=options, executable_path="C:\Utility\BrowserDrivers\chromedriver.exe")
driver.get("https://www.google.co.in")
火狐浏览器:
要初始化 geckodriver
,您可以考虑通过 executable_path
参数提及 geckodriver
的绝对路径,另外 specify/use firefox_binary
参数来配置所需的浏览器,如下所示:
from selenium import webdriver
from selenium.webdriver.firefox.firefox_binary import FirefoxBinary
from selenium.webdriver.common.desired_capabilities import DesiredCapabilities
binary = FirefoxBinary('C:\Program Files\Mozilla Firefox\firefox.exe')
caps = DesiredCapabilities().FIREFOX
driver = webdriver.Firefox(firefox_binary=binary, executable_path="C:\Utility\BrowserDrivers\geckodriver.exe")
driver.get('https://whosebug.com')
如果这回答了您的问题,请告诉我。