所以我正在开发一个脚本,从一个动态网页中抓取一些数据,并将其提交到我的数据库表中。为此,我使用了Python中的Selenium。在我重启系统之前,一切工作都很顺利,但现在chrome只能在无头模式下工作。现在chrome只在无头模式下工作,当我注释掉那个选项,以便看到chrome浏览器的实际窗口时,我得到了这个错误信息。
selenium.common.exceptions.WebDriverException。消息:未知错误。 Chrome未能启动:异常退出。 未知错误:DevToolsActivePort文件不存在)(从chrome位置usrbingoogle-chrome启动的进程不再运行,所以ChromeDriver假设Chrome已经崩溃)。
尝试过的解决方案。
EDIT: 我已经尝试过添加--no-sandbox选项,然后在这里注释出来,如快照所示。
有一点我想说的是,我的根空间比较少,只剩下340mb的可用空间。这影响吗?
要查看chrome浏览器的实际窗口,请删除参数。-headless
是完美的。
然而,我建议删除所有不需要的选项,然后用最小的代码行执行你的测试,如下所示。
from selenium import webdriverfrom selenium.webdriver.chrome.options import Options。
chrome_options = webdriver.ChromeOptions()
chrome_options.add_argument('start-maximized')
chrome_options.add_experimental_option("excludeSwitches", ["enable-automation"])
chrome_options.add_experimental_option('useAutomationExtension', False)
driver = webdriver.Chrome(options=chrome_options, executable_path=r'C:\path\to\chromedriver.exe')
driver.get("http://google.com/")
如果你看到的错误是
selenium.common.exceptions.WebDriverException: 消息:未知错误。Chrome失败启动:异常退出。未知错误:DevToolsActivePort文件不存在)(从chrome位置usrbingoogle-chrome启动的进程不再运行,所以ChromeDriver假设Chrome已经崩溃)。
你可能需要添加参数 --no-sandbox
.
所以解决的办法就是加回论点。
chrome_options.addArguments("--no-sandbox");
chrome_options.addArguments("--disable-dev-shm-usage");
你可以在下面的文章中找到详细的讨论 WebDriverException: unknown error: 在尝试启动Chrome浏览器时,DevToolsActivePort文件不存在。
确保。
@Test
作为 非根 用户。你可以在以下地方找到详细的讨论。