selenium 未知错误:无法创建Chrome进程

tquggr8v  于 2022-11-10  发布在  其他
关注(0)|答案(2)|浏览(402)

出于自动化测试的目的,我正在更新Selple和chromeDriver。我将chromeDriver和Chrome更新到了98版本,并从Seleniumv.3.3.3升级到了4.1.0。
但是每当我现在尝试运行我的测试脚本时,都会收到未知的错误。整个回溯过程如下:

C:\sw\src\Presentation\client\TestAutomationScripts\TestAutomationScripts\TestPlans>python TestPlan_ATO.py
Traceback (most recent call last):
  File "TestPlan_ATO.py", line 9, in <module>
    class TestPlan_ATO():
  File "TestPlan_ATO.py", line 11, in TestPlan_ATO
    testPlan = Test(name="TestPlan_ATO")
  File "C:\sw\src\Presentation\client\TestAutomationScripts\TestAutomationScripts\TestPlans\TestCases\Test.py", line 113, in __init__
    self.driver = WebDriverInstance().driver
  File "..\Util\WebDriverInstance.py", line 43, in __call__
    cls._instances[cls] = super(Singleton, cls).__call__(*args,**kwargs)
  File "..\Util\WebDriverInstance.py", line 97, in __init__
    driver = driverModule(executable_path=driverPath)
  File "..\Util\WebDriverInstance.py", line 73, in createChromeDriver
    driver = webdriver.Chrome(desired_capabilities=capabilities)
  File "C:\Anaconda\lib\selenium\webdriver\chrome\webdriver.py", line 73, in __init__
    service_log_path, service, keep_alive)
  File "C:\Anaconda\lib\selenium\webdriver\chromium\webdriver.py", line 99, in __init__
    options=options)
  File "C:\Anaconda\lib\selenium\webdriver\remote\webdriver.py", line 269, in __init__
    self.start_session(capabilities, browser_profile)
  File "C:\Anaconda\lib\selenium\webdriver\remote\webdriver.py", line 360, in start_session
    response = self.execute(Command.NEW_SESSION, parameters)
  File "C:\Anaconda\lib\selenium\webdriver\remote\webdriver.py", line 425, in execute
    self.error_handler.check_response(response)
  File "C:\Anaconda\lib\selenium\webdriver\remote\errorhandler.py", line 247, in check_response
    raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.WebDriverException: Message: unknown error: Failed to create Chrome process.
Stacktrace:
Backtrace:
        Ordinal0 [0x00317AC3+2587331]
        Ordinal0 [0x002AADD1+2141649]
        Ordinal0 [0x001A3BB8+1063864]
        Ordinal0 [0x001BF684+1177220]
        Ordinal0 [0x001BCC51+1166417]
        Ordinal0 [0x001ED12F+1364271]
        Ordinal0 [0x001ECD5A+1363290]
        Ordinal0 [0x001E84A6+1344678]
        Ordinal0 [0x001C53F6+1201142]
        Ordinal0 [0x001C62E6+1204966]
        GetHandleVerifier [0x004BDF22+1680738]
        GetHandleVerifier [0x00570DBC+2413564]
        GetHandleVerifier [0x003AD151+563089]
        GetHandleVerifier [0x003ABF13+558419]
        Ordinal0 [0x002B081E+2164766]
        Ordinal0 [0x002B5508+2184456]
        Ordinal0 [0x002B5650+2184784]
        Ordinal0 [0x002BF5BC+2225596]
        BaseThreadInitThunk [0x75A4FA29+25]
        RtlGetAppContainerNamedObjectPath [0x77107A9E+286]
        RtlGetAppContainerNamedObjectPath [0x77107A6E+238]
        (No symbol) [0x00000000]

我在我的道路上安装了Chrome,但这似乎没有什么不同。在Chrome属性的“兼容性”选项卡下,我勾选了“以管理员身份运行此程序”,但同样没有起作用。我不知道还能做什么。

编辑1:

Anaconda发行版位于我的C盘上。Selify目录位于Anaconda目录内。当我更新Selify时,我在回溯中得到了ModuleNotFoundError:‘certifi’:

Traceback (most recent call last):
  File "TestPlan_ATO.py", line 2, in <module>
    from TestCases.Test import Test
  File "C:\sw\src\Presentation\client\TestAutomationScripts\TestAutomationScripts\TestPlans\TestCases\Test.py", line 72, in <module>
    from Util.WebDriverEventListener import WebDriverEventListener as Listener
  File "..\Util\WebDriverEventListener.py", line 25, in <module>
    from selenium.webdriver.support.events import AbstractEventListener
  File "C:\Anaconda\lib\selenium\webdriver\__init__.py", line 18, in <module>
    from .firefox.webdriver import WebDriver as Firefox  # noqa
  File "C:\Anaconda\lib\selenium\webdriver\firefox\webdriver.py", line 24, in <module>
    from selenium.webdriver.remote.webdriver import WebDriver as RemoteWebDriver
  File "C:\Anaconda\lib\selenium\webdriver\remote\webdriver.py", line 39, in <module>
    from .remote_connection import RemoteConnection
  File "C:\Anaconda\lib\selenium\webdriver\remote\remote_connection.py", line 26, in <module>
    import certifi
ModuleNotFoundError: No module named 'certifi'

因此,为了修复这个错误,我进入Remote_Connection.py并将下面的前两行添加到文件中。

import sys
sys.path.append('/Anaconda/Lib/site-packages/pip/_vendor')

import logging
import socket
import string

import os
import certifi
import urllib3
import platform

然后,我收到了另一个错误,抱怨的是Testcase e.ini,这是一个配置文件,其中包含被测试系统的IP、应用程序的登录信息等。

Cannot load C:\Anaconda\Lib\site-packages\pip\_vendor\TestPlans\TestCases\testcase.ini
Traceback (most recent call last):
  File "TestPlan_ATO.py", line 5, in <module>
    from TestCases.ATO.TestCase_ATO import TestCase_ATO
  File "C:\sw\src\Presentation\client\TestAutomationScripts\TestAutomationScripts\TestPlans\TestCases\ATO\TestCase_ATO.py", line 22, in <module>
    from Util.UiOps import UiOps as ops
  File "..\Util\UiOps.py", line 37, in <module>
    class UiOps:
  File "..\Util\UiOps.py", line 40, in UiOps
    config.load('','testcase.ini')
  File "..\Util\ConfigManager.py", line 114, in load
    new_dict: dict = self.loader.loadFile(package=package, module=module, filename=filename)
  File "..\Util\ConfigLoader.py", line 96, in loadFile
    raise IOError('Cannot load ' + config_file)
OSError: Cannot load C:\Anaconda\Lib\site-packages\pip\_vendor\TestPlans\TestCases\testcase.ini

每次运行自动测试时都会读取TestCase.ini。ConfigLoader类返回给定模块名称和相对于ConfigLoader的文件路径的配置对象。因此,我进入ConfigLoader.py,并将下面try/Except块中的-1s更改为-2s:

try:

    if self.package:
        #If a package is given, use the last entry in sys.path which goes up a directory, and drill down into the package
        path =  sys.path[-2] + "//" + self.package
    else:
        #If not, use the information stored in sys.path, and assume we want to look in TestPlans/TestCases
        path = sys.path[-2] + "//TestPlans//TestCases"

这就是我第一次发布的未知错误的原因。

testcase e.ini也是选择浏览器和存储驱动路径的地方。它看起来是这样的:

; parameters for test framework
[TEST]
DRIVER_PATH = C:\Anaconda\
BROWSER = CHROME
; BROWSER = EDGE
; BROWSER = FIREFOX
CHROME_PATH = C:\Program Files\Google\Chrome\Application\chrome.exe
; EDGE_PATH = C:\Program Files (x86)\Microsoft\Edge\Application\msedge.exe
; FIREFOX_PATH = C:\Program Files\Mozilla Firefox\firefox.exe
xcitsw88

xcitsw881#

Chrome.exe有两个副本,一个在Program Files中,另一个在Program Files(X86)中。我不知道为什么在两个不同的C驱动器子目录中有两个不同的Google目录。无论如何,我删除了Program Files中的Google目录,并保留了(X86)中的那个目录,现在我的测试脚本再次运行。

jpfvwuh4

jpfvwuh42#

与发现的解决方案Trevor相关,此错误也可能是由于应用程序自己的目录中存在new_chrome.exe造成的。
这个问题会影响其他一些Chrome浏览器或版本(Brave[106.0.5249.103];我在那里遇到过类似的错误-CoCreate ProcessLauncherClass failed),但似乎不是所有的(Microsoft Edge[106.0.1370.42];无法复制该问题)。
无论哪种方式,删除替换可执行文件都可以解决错误,而不会出现进一步的问题。

相关问题