I use Webdrivermanager to update my drivers. But for the Edge browser I get errors.
JavaScript
x
5
1
elif preferred_browser == "Edge":
2
service = Edge_Service(EdgeChromiumDriverManager().install())
3
service.creationflags = CREATE_NO_WINDOW
4
driver = webdriver.Edge(service=service)
5
The Error:
JavaScript
1
16
16
1
File "PATH", line 1168, in start
2
service = Edge_Service(EdgeChromiumDriverManager().install())#r".Driversedgedriver_win64msedgedriver.exe"
3
File "PATHmicrosoft.py", line 51, in __init__
4
super().__init__(path, log_level, print_first_line, cache_valid_range)
5
File "PATHwebdriver_managermanager.py", line 13, in __init__
6
log("====== WebDriver manager ======", level=log_level)
7
File "PATHwebdriver_managerlogger.py", line 25, in log
8
_init_logger(level, name, first_line, formatter)
9
File "PATHwebdriver_managerlogger.py", line 19, in _init_logger
10
_logger.setLevel(level)
11
File "PATHPython310liblogging__init__.py", line 1443, in setLevel
12
self.level = _checkLevel(level)
13
File "PATHPython310liblogging__init__.py", line 201, in _checkLevel
14
raise TypeError("Level not an integer or a valid string: %r"
15
TypeError: Level not an integer or a valid string: None
16
Well I edited the manager, to save to another location. But it does work for Chrome and Firefox why not for edge…
modified driver_cache.py:
JavaScript
1
39
39
1
def save_file_to_cache(self, file: File, browser_version, driver_name, os_type, driver_version):
2
for directory in os.listdir(r'./Drivers/') :
3
if re.fullmatch('.*'+driver_name+'.*',directory):
4
5
shutil.rmtree(r'./Drivers/'+directory)
6
7
with open(r'./Drivers/drivers.json') as oldfile:
8
data = oldfile.read().split("n")
9
oldfile.close()
10
11
i = 0
12
new_data = []
13
while i < len(data):
14
if driver_name in data[i]:
15
i += 4
16
continue
17
new_data.append(data[i])
18
i += 1
19
20
with open(r'./Drivers/drivers.json', 'w') as newfile:
21
newfile.write("n".join(new_data))
22
23
data = yaml.load(open(r'./Drivers/drivers.json'),Loader=yaml.FullLoader)
24
data = json.dumps(data)
25
data = data.replace("'",'"')
26
27
with open(r'./Drivers/drivers.json', 'w') as newfile:
28
newfile.write(data)
29
30
31
path = r".\Drivers\" + driver_name + "_" + driver_version
32
archive = save_file(file, path)
33
files = archive.unpack(path)
34
binary = self.__get_binary(files, driver_name)
35
binary_path = os.path.join(path, binary)
36
self.__save_metadata(browser_version, driver_name, os_type, driver_version, binary_path)
37
log(f"Driver has been saved in cache [{path}]")
38
return binary_path
39
modified microsoft.py:
JavaScript
1
23
23
1
class EdgeChromiumDriverManager(DriverManager):
2
def __init__(
3
self,
4
version="latest",
5
os_type=utils.os_type(),
6
#path=None,
7
path=r".\Drivers",
8
name="edgedriver",
9
url="https://msedgedriver.azureedge.net",
10
latest_release_url="https://msedgedriver.azureedge.net/ LATEST_RELEASE",
11
log_level=None,
12
print_first_line=None,
13
cache_valid_range=1,
14
):
15
super().__init__(path, log_level, print_first_line, cache_valid_range)
16
self.driver = EdgeChromiumDriver(
17
version=version,
18
os_type=os_type,
19
name=name,
20
url=url,
21
latest_release_url=latest_release_url,
22
)
23
Just to compare the edited and working chrome.py:
JavaScript
1
21
21
1
class ChromeDriverManager(DriverManager):
2
def __init__(self, version="latest",
3
os_type=utils.os_type(),
4
#path=None,
5
path=r".Drivers",
6
name="chromedriver",
7
url="https://chromedriver.storage.googleapis.com", latest_release_url="https://chromedriver.storage.googleapis.com/LATEST_RELEASE",
8
chrome_type=ChromeType.GOOGLE,
9
log_level=logging.INFO,
10
print_first_line=True,
11
cache_valid_range=1):
12
super().__init__(path, log_level=log_level, print_first_line=print_first_line,
13
cache_valid_range=cache_valid_range)
14
15
self.driver = ChromeDriver(name=name,
16
version=version,
17
os_type=os_type,
18
url=url,
19
latest_release_url=latest_release_url,
20
chrome_type=chrome_type)
21
I am sorry but I have no idea :(
Best Regards Christian
Advertisement
Answer
Okay,
it was a Problem with the logger of Webdrivermanager.
For microsoft.py I had to import logging and make some changes for the log_level:
JavaScript
1
23
23
1
class EdgeChromiumDriverManager(DriverManager):
2
def __init__(
3
self,
4
version="latest",
5
os_type=utils.os_type(),
6
#path=None,
7
path=r".\Drivers",
8
name="edgedriver",
9
url="https://msedgedriver.azureedge.net",
10
latest_release_url="https://msedgedriver.azureedge.net/LATEST_RELEASE",
11
log_level=logging.INFO,
12
print_first_line=None,
13
cache_valid_range=1,
14
):
15
super().__init__(path, log_level, print_first_line, cache_valid_range)
16
self.driver = EdgeChromiumDriver(
17
version=version,
18
os_type=os_type,
19
name=name,
20
url=url,
21
latest_release_url=latest_release_url,
22
)
23
EDIT:
I created a custom_webdriver_manager