2

I'm in the process of updating Selenium and chromedriver for automated testing purposes. I updated chromedriver and Chrome to version 98, and I went from Selenium v.3.3.3 to 4.1.0.

But I'm getting an unknown error whenever I try and run my test scripts now. The entire traceback is below:

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] 

I have Chrome on my PATH, but that doesn't seem to make a difference. Under the 'Compatibility' tab in Chrome properties, I've checked 'Run this program as administrator' but, again, that didn't work. I'm not sure what else to do.

Edit 1:

The Anaconda distribution sits on my C drive. The selenium directory is inside the Anaconda directory. When I updated selenium, I got ModuleNotFoundError: 'certifi' in the traceback:

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' 

So to fix this error, I went into remote_connection.py and added the first two lines below to the file.

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 

I then got another error complaining about testcase.ini, which is the config file that contains the IPs of the systems under test, the login information for the app, etc.

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 is read every time an automated test is run. The ConfigLoader class returns a config object given a module name and file path relative to ConfigLoader. So I go into ConfigLoader.py and I change the -1s in the try/except block below to -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" 

And that is how I arrived at the Unknown Error which I first posted about.

testcase.ini is also where the browser is selected and the driver path is stored. It looks like this:

; 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 
2
  • We are missing too much details here: what exactly is your code? Did it work before? What exactly have you changed in worked code to make it not working now etc. Commented Mar 3, 2022 at 16:01
  • I have added more details to the original post. Please let me know if you need any more information. Commented Mar 3, 2022 at 17:00

2 Answers 2

3

There were two copies of chrome.exe, one in Program Files and another in Program Files (x86). I don't know why there are two separate Google directories in two different C drive subdirectories. Anyway, I deleted the Google directory in Program Files and kept the one in (x86), and now my test scripts run again.

Sign up to request clarification or add additional context in comments.

Comments

1

Related to the solution Trevor discovered, this error may also be caused by the presence of new_chrome.exe within the application's own directory.

The issue affects some other chromium browsers or versions (Brave [106.0.5249.103]; where I had encountered a similar error – CoCreate ProcessLauncherClass failed), but seemingly not all (Microsoft Edge [106.0.1370.42]; could not replicate the issue).

Either way, removal of the substitute executable resolves the error without further issue.

Comments

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.