From 3ac4c2eccbfeac39b601447e966dbefebf6fc9e8 Mon Sep 17 00:00:00 2001 From: Zeeshan Shaikh Date: Thu, 20 Oct 2022 21:02:30 +0530 Subject: [PATCH 1/4] Added option to dynamically generate gecko driver mappings --- src/webdrivermanager/base.py | 17 +++++++++++++++++ src/webdrivermanager/gecko.py | 3 ++- 2 files changed, 19 insertions(+), 1 deletion(-) diff --git a/src/webdrivermanager/base.py b/src/webdrivermanager/base.py index 7a18df7..d53ada4 100644 --- a/src/webdrivermanager/base.py +++ b/src/webdrivermanager/base.py @@ -383,3 +383,20 @@ def download_and_install(self, version="latest", show_progress_bar=True): except Exception as e: LOGGER.warning(f"Unable to change permissions of {dest_file}.\n{e}") return (src_file, dest_file) + + + def _get_gecko_mappings(): + URL = 'https://firefox-source-docs.mozilla.org/testing/geckodriver/Support.html' + page = requests.get( URL ) + soup = BeautifulSoup( page.content , 'lxml') + + table = soup.find("div", {"id": "supported-platforms"}).find("table") + rows = table.find_all('tr') + version_map = [] + for row in rows: + cols=row.find_all('td') + if len(cols) > 0: + cols=[x.text.strip() for x in cols ] + version_map.append((cols[0], cols[2].split(" ")[0])) + + return version_map \ No newline at end of file diff --git a/src/webdrivermanager/gecko.py b/src/webdrivermanager/gecko.py index 5409665..3fb2c55 100644 --- a/src/webdrivermanager/gecko.py +++ b/src/webdrivermanager/gecko.py @@ -69,7 +69,8 @@ def get_compatible_version(self): # Map browser version to webdriver version # https://firefox-source-docs.mozilla.org/testing/geckodriver/Support.html browser_version = self._get_browser_version() - version_map = [(60, "v0.29.0"), (57, "v0.25.0"), (55, "v0.20.1"), (53, "v0.18.0"), (52, "v0.17.0")] + # version_map = [(60, "v0.29.0"), (57, "v0.25.0"), (55, "v0.20.1"), (53, "v0.18.0"), (52, "v0.17.0")] + version_map = self._get_gecko_mappings() for browser_minimum, driver_version in version_map: if browser_version >= browser_minimum: From 61f48ddb5f67007f77ce89d994bde8ebffe27c0f Mon Sep 17 00:00:00 2001 From: Zeeshan Shaikh Date: Thu, 20 Oct 2022 21:10:57 +0530 Subject: [PATCH 2/4] updates the sequence --- src/webdrivermanager/base.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/webdrivermanager/base.py b/src/webdrivermanager/base.py index d53ada4..3fb7bf3 100644 --- a/src/webdrivermanager/base.py +++ b/src/webdrivermanager/base.py @@ -397,6 +397,6 @@ def _get_gecko_mappings(): cols=row.find_all('td') if len(cols) > 0: cols=[x.text.strip() for x in cols ] - version_map.append((cols[0], cols[2].split(" ")[0])) + version_map.append((cols[2].split(" ")[0], cols[0])) return version_map \ No newline at end of file From 717fa413b2b51d02470d1a9cc19b325535c3d278 Mon Sep 17 00:00:00 2001 From: Zeeshan Shaikh Date: Thu, 20 Oct 2022 21:51:00 +0530 Subject: [PATCH 3/4] Converted browser version to integer --- src/webdrivermanager/base.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/webdrivermanager/base.py b/src/webdrivermanager/base.py index 3fb7bf3..ae21c2f 100644 --- a/src/webdrivermanager/base.py +++ b/src/webdrivermanager/base.py @@ -397,6 +397,6 @@ def _get_gecko_mappings(): cols=row.find_all('td') if len(cols) > 0: cols=[x.text.strip() for x in cols ] - version_map.append((cols[2].split(" ")[0], cols[0])) + version_map.append((int(cols[2].split(" ")[0]), cols[0])) return version_map \ No newline at end of file From 881b3bc76fc606366a1760a69705df65bffd73a3 Mon Sep 17 00:00:00 2001 From: Zeeshan Shaikh Date: Thu, 20 Oct 2022 23:14:00 +0530 Subject: [PATCH 4/4] rectified a minor glitch in version to add "v" before all driver versions --- src/webdrivermanager/base.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/webdrivermanager/base.py b/src/webdrivermanager/base.py index ae21c2f..68998d1 100644 --- a/src/webdrivermanager/base.py +++ b/src/webdrivermanager/base.py @@ -397,6 +397,6 @@ def _get_gecko_mappings(): cols=row.find_all('td') if len(cols) > 0: cols=[x.text.strip() for x in cols ] - version_map.append((int(cols[2].split(" ")[0]), cols[0])) + version_map.append((int(cols[2].split(" ")[0]), "v"+cols[0])) return version_map \ No newline at end of file