我试图在 linux 上启动 chrome 网络驱动程序,但它挂起,然后关闭
I'm trying to start the chrome webdriver on linux, but it hangs, then closes
我正在用 selenium (python) 制作一个程序。它正在工作,但无处不在,网络驱动程序不再工作。我正在 windows 环境中开发(它工作正常),但是一旦我将代码上传到生产服务器 (Ubuntu),我尝试打开网络驱动程序,它只显示 data;
,驱动程序挂起,然后关闭。之后没有代码继续。
示例:
print("Starting web driver")
driver = webdriver.Chrome(driver_path, options=opt)
print("Opening URL") # This code doesn't run
driver.get(config.url) # This code doesn't run
我尝试过的事情:
运行 在 Windows 上(正常工作)
正在更新网络驱动程序
运行 它在 venv 之外
运行 新的隔离环境中的驱动程序
将整个代码包装在 try-except 中(无错误输出)
运行 参数 --headless
编辑:我正在 运行ning python3.7,chrome webdriver V 75.0.3770.90
Edit2:driver_path
变量是 chromedriver
文件的相对路径。 opt 是我的 chrome 选项列表:
opt = Options()
opt.add_argument('--no-sandbox')
opt.add_argument('--disable-dev-shm-usage')
profile = {"plugins.always_open_pdf_externally": True,
"download.default_directory": download_directory,
"download.prompt_for_download": False,
"download.directory_upgrade": True}
opt.add_experimental_option("prefs", profile)
我也使用 gunicorn 作为我的网络服务器,但是 运行使用默认的 (flask) 网络服务器,我仍然遇到问题。我还通过基于 flask 的网络应用程序(它是一个用于工作的网络应用程序)执行我为 selenium 编写的功能ubuntu 运行 安装脚本的机器安装了桌面环境。
15-25 秒后,windows 关闭,终端无输出。大约 90 秒后,我在终端中收到一条消息:
Message: session not created
from disconnected: unable to connect to renderer
(Session info: chrome=75.0.3770.90)
我还注意到 chrome 驱动程序的打开时间比平时长。
Edit3:我真的删除了整个虚拟机并从头开始重新安装,我仍然 运行 遇到同样的问题,我已经恢复到旧版本但它仍然没有't 运行,这没有逻辑意义。我唯一的想法是存在一些配置错误或者有什么干扰了它。
Edit4:我可以通过添加参数 --verbose
从 webdriver 获取日志
这是日志:
[1562179109.454][INFO]: resolved localhost to ["::1","127.0.0.1"]
[1562179111.454][WARNING]: Timed out connecting to Chrome, retrying...
[1562179111.454][INFO]: resolved localhost to ["::1","127.0.0.1"]
[1562179115.454][WARNING]: Timed out connecting to Chrome, retrying...
[1562179115.455][INFO]: resolved localhost to ["::1","127.0.0.1"]
[1562179123.454][WARNING]: Timed out connecting to Chrome, retrying...
[1562179123.455][INFO]: resolved localhost to ["::1","127.0.0.1"]
[1562179139.455][WARNING]: Timed out connecting to Chrome, giving up.
[1562179139.506][INFO]: [42e538ee02eb06b9ac776969dddf01d1] RESPONSE InitSession ERROR session not created
from disconnected: unable to connect to renderer
(Session info: chrome=75.0.3770.90)
[1562179139.506][DEBUG]: Log type 'driver' lost 9 entries on destruction
[1562179139.506][DEBUG]: Log type 'browser' lost 0 entries on destruction
我对Linux不太熟悉,但从我过去看到的,我感觉它与/etc/hosts有关(idk?)
编辑5:
我注意到这种情况在我安装 windscribe (vpn) 后开始发生,这让我觉得 windscribe 以某种方式干扰了连接。
我发现,windscribe (vpn) 干扰了与 chrome webdriver 的连接,我相信它与它的 built-in 防火墙有关,卸载后,调用 sudo apt autoremove -y
并重新启动,它工作正常!
编辑:我 re-installed VPN (windscribe) 和 de-activated 包含的防火墙,之后它正常工作。
我正在用 selenium (python) 制作一个程序。它正在工作,但无处不在,网络驱动程序不再工作。我正在 windows 环境中开发(它工作正常),但是一旦我将代码上传到生产服务器 (Ubuntu),我尝试打开网络驱动程序,它只显示 data;
,驱动程序挂起,然后关闭。之后没有代码继续。
示例:
print("Starting web driver")
driver = webdriver.Chrome(driver_path, options=opt)
print("Opening URL") # This code doesn't run
driver.get(config.url) # This code doesn't run
我尝试过的事情:
运行 在 Windows 上(正常工作)
正在更新网络驱动程序
运行 它在 venv 之外
运行 新的隔离环境中的驱动程序
将整个代码包装在 try-except 中(无错误输出)
运行 参数
--headless
编辑:我正在 运行ning python3.7,chrome webdriver V 75.0.3770.90
Edit2:driver_path
变量是 chromedriver
文件的相对路径。 opt 是我的 chrome 选项列表:
opt = Options()
opt.add_argument('--no-sandbox')
opt.add_argument('--disable-dev-shm-usage')
profile = {"plugins.always_open_pdf_externally": True,
"download.default_directory": download_directory,
"download.prompt_for_download": False,
"download.directory_upgrade": True}
opt.add_experimental_option("prefs", profile)
我也使用 gunicorn 作为我的网络服务器,但是 运行使用默认的 (flask) 网络服务器,我仍然遇到问题。我还通过基于 flask 的网络应用程序(它是一个用于工作的网络应用程序)执行我为 selenium 编写的功能ubuntu 运行 安装脚本的机器安装了桌面环境。
15-25 秒后,windows 关闭,终端无输出。大约 90 秒后,我在终端中收到一条消息:
Message: session not created
from disconnected: unable to connect to renderer
(Session info: chrome=75.0.3770.90)
我还注意到 chrome 驱动程序的打开时间比平时长。
Edit3:我真的删除了整个虚拟机并从头开始重新安装,我仍然 运行 遇到同样的问题,我已经恢复到旧版本但它仍然没有't 运行,这没有逻辑意义。我唯一的想法是存在一些配置错误或者有什么干扰了它。
Edit4:我可以通过添加参数 --verbose
从 webdriver 获取日志
这是日志:
[1562179109.454][INFO]: resolved localhost to ["::1","127.0.0.1"]
[1562179111.454][WARNING]: Timed out connecting to Chrome, retrying...
[1562179111.454][INFO]: resolved localhost to ["::1","127.0.0.1"]
[1562179115.454][WARNING]: Timed out connecting to Chrome, retrying...
[1562179115.455][INFO]: resolved localhost to ["::1","127.0.0.1"]
[1562179123.454][WARNING]: Timed out connecting to Chrome, retrying...
[1562179123.455][INFO]: resolved localhost to ["::1","127.0.0.1"]
[1562179139.455][WARNING]: Timed out connecting to Chrome, giving up.
[1562179139.506][INFO]: [42e538ee02eb06b9ac776969dddf01d1] RESPONSE InitSession ERROR session not created
from disconnected: unable to connect to renderer
(Session info: chrome=75.0.3770.90)
[1562179139.506][DEBUG]: Log type 'driver' lost 9 entries on destruction
[1562179139.506][DEBUG]: Log type 'browser' lost 0 entries on destruction
我对Linux不太熟悉,但从我过去看到的,我感觉它与/etc/hosts有关(idk?)
编辑5: 我注意到这种情况在我安装 windscribe (vpn) 后开始发生,这让我觉得 windscribe 以某种方式干扰了连接。
我发现,windscribe (vpn) 干扰了与 chrome webdriver 的连接,我相信它与它的 built-in 防火墙有关,卸载后,调用 sudo apt autoremove -y
并重新启动,它工作正常!
编辑:我 re-installed VPN (windscribe) 和 de-activated 包含的防火墙,之后它正常工作。