from selenium import webdriver
d = webdriver.Chrome('/home/PycharmProjects/chromedriver')
d.get('https://www.google.nl/')
我遇到以下错误:
selenium.common.exceptions.WebDriverException: Message: unknown error: Chrome failed to start: crashed
(unknown error: DevToolsActivePort file doesn't exist)
(The process started from chrome location /opt/google/chrome/google-chrome is no longer running, so ChromeDriver is assuming that Chrome has crashed.)
(Driver info: chromedriver=2.43.600233, platform=Linux 4.15.0-38-generic x86_64)
我安装了最新的chrome版本和chromedriver
编辑:
尝试@ b0sss解决方案后,出现以下错误。
selenium.common.exceptions.WebDriverException: Message: unknown error: Chrome failed to start: crashed
(chrome not reachable)
(The process started from chrome location /opt/google/chrome/google-chrome is no longer running, so chromedriver is assuming that Chrome has crashed.)
(Driver info: chromedriver=2.43.600233 (523efee95e3d68b8719b3a1c83051aa63aa6b10d),platform=Linux 4.15.0-38-generic x86_64)
#1 楼
尝试在此处下载并使用此最新的chrome驱动程序版本。https://sites.google.com/a/chromium.org/chromedriver/downloads
编辑:
请尝试:
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
chrome_options = Options()
chrome_options.add_argument('--headless')
chrome_options.add_argument('--no-sandbox')
chrome_options.add_argument('--disable-dev-shm-usage')
d = webdriver.Chrome('/home/PycharmProjects/chromedriver',chrome_options=chrome_options)
d.get('https://www.google.nl/')
#2 楼
此错误消息...selenium.common.exceptions.WebDriverException: Message: unknown error: Chrome failed to start: crashed
(unknown error: DevToolsActivePort file doesn't exist)
(The process started from chrome location /opt/google/chrome/google-chrome is no longer running, so ChromeDriver is assuming that Chrome has crashed.)
...意味着ChromeDriver无法启动/产生新的WebBrowser,即Chrome浏览器会话。
您的主要问题是Chrome浏览器未安装在系统的默认位置。
服务器(例如ChromeDriver)希望您将Chrome安装在每个系统的默认位置,如下图所示:1
1对于Linux系统,ChromeDriver希望
/usr/bin/google-chrome
是实际Chrome二进制文件的符号链接。 解决方案
如果在非标准位置使用Chrome可执行文件,则必须重写Chrome二进制位置,如下所示:
Python解决方案:
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
options = Options()
options.binary_location = "C:\path\to\chrome.exe" #chrome binary location specified here
options.add_argument("--start-maximized") #open Browser in maximized mode
options.add_argument("--no-sandbox") #bypass OS security model
options.add_argument("--disable-dev-shm-usage") #overcome limited resource problems
options.add_experimental_option("excludeSwitches", ["enable-automation"])
options.add_experimental_option('useAutomationExtension', False)
driver = webdriver.Chrome(options=options, executable_path=r'C:\path\to\chromedriver.exe')
driver.get('http://google.com/')
Java解决方案:
System.setProperty("webdriver.chrome.driver", "C:\Utility\BrowserDrivers\chromedriver.exe");
ChromeOptions opt = new ChromeOptions();
opt.setBinary("C:\Program Files (x86)\Google\Chrome\Application\chrome.exe"); //chrome binary location specified here
options.addArguments("start-maximized");
options.setExperimentalOption("excludeSwitches", Collections.singletonList("enable-automation"));
options.setExperimentalOption("useAutomationExtension", false);
WebDriver driver = new ChromeDriver(opt);
driver.get("https://www.google.com/");
评论
设置chrome二进制文件有效。给你最好的答案。同样,完全删除Chrome / Chromedriver / Pycharm,然后重新安装所有内容也可以解决问题,因此现在我没有设置的Chrome二进制文件。
– SOeh
18-10-31在18:02
#3 楼
我遇到了在Docker容器上运行的确切问题(在构建环境中)。将ssh放入容器后,我尝试手动运行测试,但仍然遇到(unknown error: DevToolsActivePort file doesn't exist)
(The process started from chrome location /usr/bin/google-chrome-stable is
no longer running, so ChromeDriver is assuming that Chrome has crashed.)
当我尝试在本地运行chrome
/usr/bin/google-chrome-stable
时,错误消息Running as root without --no-sandbox is not supported
我检查了我的ChromeOptions,但缺少了
--no-sandbox
,这就是为什么它无法生成铬的原因。capabilities = Selenium::WebDriver::Remote::Capabilities.chrome(
chromeOptions: { args: %w(headless --no-sandbox disable-gpu window-size=1920,1080) }
)
评论
解决此问题的另一种方法是不以root用户身份运行该进程(在容器内)。无论如何,从安全角度来看,这是更好的选择。 :)
– XtraSimplicity
19-10-14在23:27
#4 楼
希望这对某人有帮助。这适用于我在Ubuntu 18.10上的功能from selenium import webdriver
from selenium.webdriver.chrome.options import Options
chrome_options = Options()
chrome_options.add_argument("--headless")
chrome_options.add_argument('--no-sandbox')
driver = webdriver.Chrome('/usr/lib/chromium-browser/chromedriver', options=chrome_options)
driver.get('http://www.google.com')
print('test')
driver.close()
#5 楼
我遇到了类似的问题,并发现选项参数必须按一定顺序排列。我只知道在Ubuntu 18机器上运行此功能所需的两个参数。此示例代码对我有效:from selenium import webdriver
from selenium.webdriver.chrome.options import Options
options = Options()
options.add_argument('--no-sandbox')
options.add_argument('--disable-dev-shm-usage')
d = webdriver.Chrome(executable_path=r'/home/PycharmProjects/chromedriver', chrome_options=options)
d.get('https://www.google.nl/')
评论
是不是,使用--no--sandbox选项是否存在安全问题?
–马哈克·马利克(Mahak Malik)
2月14日18:26
#6 楼
假设您已经下载了chromeDriver,则当已经打开多个chrome标签时也会发生此错误。如果关闭所有标签并再次运行,该错误应该会清除。
#7 楼
在我的情况下,错误是由www-data用户引起的,而与开发中的普通用户无关。该错误是为此用户初始化x显示的问题。因此,在不打开浏览器窗口的情况下运行我的硒测试,该问题已解决:opts.set_headless(True)
#8 楼
对于RobotFramework我解决了!使用
--no-sandbox
${chrome_options}= Evaluate sys.modules['selenium.webdriver'].ChromeOptions() sys, selenium.webdriver
Call Method ${chrome_options} add_argument test-type
Call Method ${chrome_options} add_argument --disable-extensions
Call Method ${chrome_options} add_argument --headless
Call Method ${chrome_options} add_argument --disable-gpu
Call Method ${chrome_options} add_argument --no-sandbox
Create Webdriver Chrome chrome_options=${chrome_options}
代替
Open Browser about:blank headlesschrome
Open Browser about:blank chrome
评论
我也面临着同样的问题,但对您的上述评论感到有些困惑。你能帮忙吗?我当前的代码是SeleniumLibrary.Open浏览器,关于:空白$ {BROWSER} ..so我用您的语句替换此行?
–马哈克·马利克(Mahak Malik)
2月11日14:39
#9 楼
一个没有其他人说过但对我有用的简单解决方案,在没有sudo
或不是root用户的情况下无法运行。#10 楼
在过去六个月的测试运行中,此错误是随机发生的(Chrome 76和Chromedriver 76仍然发生),并且仅在Linux上发生。平均每几百个测试中的一个会失败,然后下一个测试会正常运行。无法解决该问题,在Python中,我将
driver = webdriver.Chrome()
包裹在try..except块中的setUp()中在我的所有测试都源自的测试用例类中。如果遇到Webdriver异常,它将等待十秒钟,然后重试。它解决了我遇到的问题;并不优雅,但是可以。
from selenium import webdriver
from selenium.common.exceptions import WebDriverException
try:
self.driver = webdriver.Chrome(chrome_options=chrome_options, desired_capabilities=capabilities)
except WebDriverException as e:
print("\nChrome crashed on launch:")
print(e)
print("Trying again in 10 seconds..")
sleep(10)
self.driver = webdriver.Chrome(chrome_options=chrome_options, desired_capabilities=capabilities)
print("Success!\n")
except Exception as e:
raise Exception(e)
#11 楼
确保chromedriver
和google-chrome
可执行文件都具有执行权限sudo chmod -x "/usr/bin/chromedriver"
sudo chmod -x "/usr/bin/google-chrome"
#12 楼
我在linux环境中遇到此错误。如果不使用无头,那么您将需要from sys import platform
if platform != 'win32':
from pyvirtualdisplay import Display
display = Display(visible=0, size=(800, 600))
display.start()
#13 楼
我有同样的问题。我在带有“ sudo geany”的终端上运行它,您应该在没有“ sudo”的情况下运行它,只需在终端“ geany”上键入,这对我来说就解决了。#14 楼
我遇到了同样的问题,但我通过将chromedriver移到此路径来解决了这个问题'/ opt / google / chrome /'
,此代码正确运行了
from selenium.webdriver import Chrome
driver = Chrome('/opt/google/chrome/chromedrive')
driver.get('https://google.com')
评论
我已经从该位置下载了最新的chromedriver。
– SOeh
18-10-30在22:40
确保--no-sandbox选项是第一个(与本示例不同,第一个选项是--headless。我一直收到该错误,直到将--no-sandbox移到列表的顶部,然后添加作为第一选择。
–parsecer
19-09-24在22:05
注意:从selenium.webdriver.chrome.options导入选项
–雅各布·斯特恩(Jacob Stern)
19-10-1在17:54
据我所知--no-sandbox chrome options参数就足够了
–马克西姆·科斯特罗姆(Maksim Kostromin)
3月5日下午6:53
您需要匹配与铬一起使用的chromedriver版本
–tarvinder91
10月2日,17:59