这个过程从Chrome位置C:\ .. \ Chrome \ Application \ chrome.exe开始运行,现在不再运行,因此ChromeDriver假定Chrome已崩溃。

3
Chrome 版本:68.0.3440.106 Chrome 浏览器驱动版本:ChromeDriver 2.41.578737 Python 版本:Python 3.5.2
我用 Python 写了这段代码:
from selenium import webdriver
from selenium.webdriver.common.keys import Keys


o = webdriver.ChromeOptions()
o.add_argument("disable-extensions");
o.add_argument("--start-maximized");
driver = webdriver.Chrome(executable_path=r"chromedriver.exe",options=o)
driver.get("http://www.python.org")
assert "Python" in driver.title
elem = driver.find_element_by_name("q")
elem.clear()
elem.send_keys("pycon")
elem.send_keys(Keys.RETURN)
assert "No results found." not in driver.page_source
driver.close()

几秒钟后,Chrome 弹出以下错误:


然后除非我关闭了Chrome 并得到了以下异常,否则什么也没发生:

    Traceback (most recent call last):
  File ".../game.py", line 8, in <module>
    driver = webdriver.Chrome(executable_path=r"chromedriver.exe",options=o)
  File "...\Python\Python35-32\lib\site-packages\selenium\webdriver\chrome\webdriver.py", line 75, in __init__
    desired_capabilities=desired_capabilities)
  File "...\Python\Python35-32\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 156, in __init__
    self.start_session(capabilities, browser_profile)
  File "...\Python\Python35-32\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 251, in start_session
    response = self.execute(Command.NEW_SESSION, parameters)
  File "...\Python\Python35-32\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 320, in execute
    self.error_handler.check_response(response)
  File "...\Python\Python35-32\lib\site-packages\selenium\webdriver\remote\errorhandler.py", line 242, in check_response
    raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.WebDriverException: Message: unknown error: Chrome failed to start: exited normally
  (unknown error: unable to discover open pages)
  (The process started from chrome location C:\Program Files (x86)\Google\Chrome\Application\chrome.exe is no longer running, so ChromeDriver is assuming that Chrome has crashed.)
  (Driver info: chromedriver=2.41.578737 (49da6702b16031c40d63e5618de03a32ff6c197e),platform=Windows NT 10.0.17134 x86_64)

看到了,但没有帮助。 - assaf.b
你没有使用正确的参数,请使用:o.add_argument("--disable-extensions"); - theGuy
7个回答

1
使用正确的参数来禁用扩展:
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.chrome.options import Options
o = Options()
#o.add_argument("--disable-extensions"); #here
o.add_experimental_option("useAutomationExtension", false); #you can try this as well
o.add_argument("--start-maximized");
driver = webdriver.Chrome(executable_path=r"chromedriver.exe",chrome_options=o)
driver.get("http://www.python.org")
assert "Python" in driver.title
elem = driver.find_element_by_name("q")
elem.clear()
elem.send_keys("pycon")
elem.send_keys(Keys.RETURN)
assert "No results found." not in driver.page_source
driver.close()

你可以尝试另一种选项:o.setExperimentalOption("useAutomationExtension", false); 这个能力将有助于不加载Chrome自动化扩展。我已经更新了我的答案。 - theGuy
仍然不起作用,在Python中是 o.add_experimental_option("useAutomationExtension", False) - assaf.b
我的错,你是对的。我混淆了Python和Java。顺便问一下,你还是遇到同样的错误吗? - theGuy

1

我最近在使用TeamCity时遇到了这个问题,这是由于chrome(和chromedriver)在执行我的脚本后没有关闭导致的。 插入 "taskkill /f /im chrome.exe" 和 "taskkill /f /im chromedriver.exe" 可以解决此问题。


1
今天我遇到了同样的问题,我使用以下方法解决了:

from selenium import webdriver
from selenium.webdriver.common.keys import Keys


o = webdriver.ChromeOptions()
o.add_argument("disable-extensions")
o.add_argument("--start-maximized")
o.binary_location = "C:\Program Files (x86)\Google\Chrome\Application\chrome.exe" ## This line define path of browser. In this case, Google Chrome
driver = webdriver.Chrome(executable_path=r"chromedriver.exe",options=o)
driver.get("http://www.python.org")
assert "Python" in driver.title
elem = driver.find_element_by_name("q")
elem.clear()
elem.send_keys("pycon")
elem.send_keys(Keys.RETURN)
assert "No results found." not in driver.page_source
driver.close()

1
你能解释一下你改了哪个部分来修复这个问题吗? - Oliver.R
Oliver,请添加以下这行代码: o.binary_location = "C:\Program Files (x86)\Google\Chrome\Application\chrome.exe" ## 此行定义了浏览器的路径。在此例中为Google Chrome。 - Lucas Tula

0

这个错误信息...

selenium.common.exceptions.WebDriverException: Message: unknown error: Chrome failed to start: exited normally
  (unknown error: unable to discover open pages)
  (The process started from chrome location C:\Program Files (x86)\Google\Chrome\Application\chrome.exe is no longer running, so ChromeDriver is assuming that Chrome has crashed.)

这意味着ChromeDriver无法启动/生成一个新的WebBrowserChrome浏览器会话。

你主要的问题似乎是chrome二进制文件,也就是chrome.exe和相关文件不再位于默认位置且无法访问:

C:\Program Files (x86)\Google\Chrome\Application\

可能的原因有:


其他考虑

  • ChromeChromeDriver已经在所需位置。
  • ChromeChromeDriver对于非根(非管理员)用户具有可执行权限。
  • Selenium升级到当前版本{{link1:版本3.14.0}}。
  • 通过您的IDE清理项目工作区,并仅使用所需的依赖项重新构建项目。
  • (仅适用于WindowsOS)在执行测试套件之前和之后使用{{link2:CCleaner}}工具清除所有操作系统任务。
  • (仅适用于LinuxOS)在执行测试套件之前和之后{{link3:释放Ubuntu / Linux Mint中未使用/缓存的内存}}。
  • 如果您的基本Web Client版本太旧,则通过{{link4:Revo Uninstaller}}卸载它,并安装最新的GA和发布版本的Web Client
  • 进行系统重启
  • 非根用户身份执行您的@Test
  • 从桌面计算机上运行selenium服务器,使用webdriver-manager start启动(不要使用远程会话启动selenium服务器)。

Chrome已经打开,但是在我关闭窗口之后(很长时间没有任何响应,只有错误信息),我得到了这个异常。你的回答对我没有帮助,但还是谢谢你的尝试。 - assaf.b

0
如果有人在这里,我遇到了同样的问题,我传递了--no-sandbox参数,然后它就可以工作了。试一试吧。
chrome_options.add_argument('--no-sandbox')

0
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
o = Options()
o.add_argument('--no-sandbox')
driver = webdriver.Chrome(executable_path=r"chromedriver.exe",chrome_options=o)

这对我有用。


您的回答可以通过提供更多支持信息来改进。请[编辑]以添加进一步的细节,例如引用或文档,以便其他人可以确认您的答案是否正确。您可以在帮助中心中找到有关如何编写良好答案的更多信息。 - moken

-1
我们在使用Java、Cucumber、Maven、Serenity和IntelliJ时遇到了这个问题。尝试了所有的方法后,解决方案非常简单:
只需以管理员身份运行IntelliJ即可。

这不是对问题的答案。一旦你有足够的声望,你就可以评论任何帖子;相反,提供不需要询问者澄清的答案。- 来自审查 - Wakeme UpNow

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接