Python Selenium:WebDriverException:Chrome启动失败:崩溃,因为google Chrome不再运行,所以ChromeDriver假设Chrome已经崩溃
最近我换了电脑,从那以后我就不能用selenium启动chrome了。我也尝试过Firefox,但浏览器实例无法启动Python Selenium:WebDriverException:Chrome启动失败:崩溃,因为google Chrome不再运行,所以ChromeDriver假设Chrome已经崩溃,python,selenium,google-chrome,selenium-webdriver,selenium-chromedriver,Python,Selenium,Google Chrome,Selenium Webdriver,Selenium Chromedriver,最近我换了电脑,从那以后我就不能用selenium启动chrome了。我也尝试过Firefox,但浏览器实例无法启动 from selenium import webdriver d = webdriver.Chrome('/home/PycharmProjects/chromedriver') d.get('https://www.google.nl/') 我得到以下错误: selenium.common.exceptions.WebDriverException: Message: u
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)
请尝试在此处下载并使用此最新的chrome驱动程序版本 编辑: 试试这个:
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/')
请尝试在此处下载并使用此最新的chrome驱动程序版本 编辑: 试试这个:
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/')
此错误消息
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" #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/')
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/");
- Java解决方案:
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/')
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/");
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" #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/')
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/");
- Java解决方案:
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/')
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/");
如果关闭所有选项卡并再次运行,则错误应清除 假设您已经下载了chromeDriver,当已经有多个chrome选项卡打开时,也会发生此错误
如果关闭所有选项卡并再次运行,则错误应清除 我在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,发现它丢失了——没有沙盒,这就是它无法生成chrome的原因
capabilities = Selenium::WebDriver::Remote::Capabilities.chrome(
chromeOptions: { args: %w(headless --no-sandbox disable-gpu window-size=1920,1080) }
)
我在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,发现它丢失了——没有沙盒,这就是它无法生成chrome的原因
capabilities = Selenium::WebDriver::Remote::Capabilities.chrome(
chromeOptions: { args: %w(headless --no-sandbox disable-gpu window-size=1920,1080) }
)
在我的例子中,错误发生在www数据用户身上,而不是开发中的普通用户身上。该错误是为该用户初始化x显示时出现的问题。因此,在不打开浏览器窗口的情况下运行我的selenium测试就解决了问题,headless:
opts.set_headless(True)
在我的例子中,错误发生在www数据用户身上,而不是开发中的普通用户身上。该错误是为该用户初始化x显示时出现的问题。因此,在不打开浏览器窗口的情况下运行我的selenium测试就解决了问题,headless:
opts.set_headless(True)
希望这对别人有帮助。这在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()
希望这对别人有帮助。这在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()
我也遇到了类似的问题,并发现选项参数必须按特定顺序排列。我只知道在我的Ubuntu18机器上运行这个程序需要两个参数。此示例代码在我这方面起作用:
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/')
我也遇到了类似的问题,并发现选项参数必须按特定顺序排列。我只知道在我的Ubuntu18机器上运行这个程序需要两个参数。此示例代码在我这方面起作用:
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/')
在过去六个月的测试运行期间,这个错误一直是随机发生的(Chrome 76和Chromedriver 76仍然会发生),并且仅在Linux上发生。平均每几百个测试中就有一个会失败,然后下一个测试就会正常运行
无法解决此问题,在Python中,我将driver=webdriver.Chrome()
包装在一个try中。除了测试用例类中的setUp()中的block之外,我的所有测试都是从中派生出来的。如果遇到Webdriver异常,它将等待10秒钟,然后重试
它解决了我的问题;不优雅,但它的工作
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)
在过去六个月的测试运行期间,这个错误一直是随机发生的(Chrome 76和Chromedriver 76仍然会发生),并且仅在Linux上发生。平均每几百个测试中就有一个会失败,然后下一个测试就会正常运行
无法解决此问题,在Python中,我将driver=webdriver.Chrome()
包装在一个try中。除了测试用例类中的setUp()中的block之外,我的所有测试都是从中派生出来的。如果遇到Webdriver异常,它将等待10秒钟,然后重试
它解决了我的问题;不优雅,但它的工作
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)
机器人框架
我解决了!使用--无沙箱
${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
机器人框架
我解决了!使用--无沙箱
${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
我也有同样的问题。我在终端上运行它