我知道关于这个问题有几个答案,但是到目前为止,对我来说没有任何作用,因此我要发布一个新问题。
最近我切换了计算机,从那时起,我无法使用硒启动chrome。我也尝试过Firefox,但浏览器无法启动。
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)
答案 0 :(得分:9)
尝试在此处下载并使用此最新版chrome驱动程序。
https://sites.google.com/a/chromium.org/chromedriver/downloads
编辑:
尝试一下:
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/')
答案 1 :(得分:7)
此错误消息...
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 对于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"
driver = webdriver.Chrome(chrome_options = options, executable_path=r'C:\path\to\chromedriver.exe')
driver.get('http://google.com/')
print("Chrome Browser Invoked")
driver.quit()
Java 解决方案:
答案 2 :(得分: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.)
当我尝试在本地/usr/bin/google-chrome-stable
上运行chrome时,错误消息
Running as root without --no-sandbox is not supported
我检查了我的ChromeOptions,但它缺少--no-sandbox
,这就是为什么它无法生成Chrome的原因。
capabilities = Selenium::WebDriver::Remote::Capabilities.chrome(
chromeOptions: { args: %w(headless --no-sandbox disable-gpu window-size=1920,1080) }
)
答案 3 :(得分:3)
在我的情况下,错误是与www-data用户有关的,而与开发中的普通用户无关。该错误是为此用户初始化x显示的问题。因此,在不打开浏览器窗口而无头的情况下运行我的硒测试,此问题已解决:
opts.set_headless(True)
答案 4 :(得分:3)
我遇到了类似的问题,并且发现选项参数必须按特定顺序。我只知道在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/')
答案 5 :(得分:2)
没有其他人说过但对我有用的简单解决方案,在没有sudo
或没有root的情况下无法运行。
答案 6 :(得分:1)
对于RobotFramework
我解决了!使用<ComplianceDetails key={deviceId} deviceId={deviceId} />
--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}
答案 7 :(得分:1)
我在linux环境中遇到此错误。如果不使用无头,那么您将需要
from sys import platform
if platform != 'win32':
from pyvirtualdisplay import Display
display = Display(visible=0, size=(800, 600))
display.start()
答案 8 :(得分:1)
确保chromedriver
和google-chrome
可执行文件都具有执行权限
sudo chmod -x "/usr/bin/chromedriver"
sudo chmod -x "/usr/bin/google-chrome"
答案 9 :(得分:1)
在过去六个月的测试运行中,此错误是随机发生的(Chrome 76和Chromedriver 76仍然发生),并且仅在Linux上发生。平均而言,每数百个测试中的一个就会失败,然后下一个测试就可以正常运行。
无法解决问题,在Python中,我将 namespace AutocancellationServiceTests
{
[TestClass]
public class AutocancellationServiceTests
{
[TestMethod]
public void DatabaseconnectionTest()
{
var commandMock = new Mock<IDbCommand>();
commandMock
.Setup(m => m.ExecuteNonQuery())
.Verifiable();
var connectionMock = new Mock<IDbConnection>();
connectionMock
.Setup(m => m.CreateCommand())
.Returns(commandMock.Object);
var ConnectionMock = connectionMock.Object.State.ToString();
var connectionFactoryMock = new Mock<Servicecalls>();
connectionFactoryMock
.Setup(m => m.DatabaseConnection())
.Returns(connectionMock.Object);
var actual = connectionMock.Object;
//Assert.AreEqual(expected, actual);
}
}
}
包裹在我的所有测试所源自的测试用例类的setUp()中的try..except块中。如果遇到Webdriver异常,它将等待十秒钟,然后重试。
它解决了我遇到的问题;并不优雅,但是可以。
driver = webdriver.Chrome()
答案 10 :(得分:0)
我有同样的问题。我在带有“ sudo geany”的终端上运行它,您应该在没有“ sudo”的情况下运行它,只需在终端“ geany”上键入,这对我来说就解决了。
答案 11 :(得分:0)
希望这对某人有帮助。这在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()
答案 12 :(得分:0)
假设您已经下载了chromeDriver,则当已经打开多个chrome标签时,也会发生此错误。
如果关闭所有选项卡并再次运行,则错误应清除。
答案 13 :(得分:0)
我遇到了同样的问题,但是我将chromedriver移到了这条路 '/ opt / google / chrome /'
此代码正确运行
from selenium.webdriver import Chrome
driver = Chrome('/opt/google/chrome/chromedrive')
driver.get('https://google.com')
答案 14 :(得分:0)
这里每个机构提供的解决方案都有助于清除问题的表面,但是
要解决这个问题,您必须在非root用户上运行该应用程序 在 linux 上。
<块引用>根据这篇文章
https://github.com/paralelo14/google_explorer/issues/2#issuecomment-246476321
答案 15 :(得分:0)
就我而言,chrome 坏了。以下两行解决了问题,
apt -y update; apt -y upgrade; apt -y dist-upgrade
apt --fix-broken install
答案 16 :(得分:0)
尝试使用 Pycharm 调试器在 WSL2 中运行/调试 Python Selenium 脚本时遇到此问题。
第一个解决方案是使用 --headless
模式,但我更喜欢在调试过程中使用 Chrome GUI。
在 Pycharm 调试器外部的系统终端中,Chrome GUI 以这种方式设置 DISPLAY
环境变量效果很好(遵循指南 here):
export DISPLAY=$(cat /etc/resolv.conf | grep nameserver | awk '{print $2; exit;}'):0.0
不幸的是,调试期间 ~/.bashrc
未在 Pycharm 中运行,导出不起作用。
我从 Pycharm 调试器获得 Chrome GUI 的方式:在 WSL2 中运行 echo $DISPLAY
,将 ip(您有类似的东西)172.18.144.1:0
粘贴到 Pycharm 调试配置 > 环境变量中: