Skip to content

Commit

Permalink
see version 3.13.0 changelog
Browse files Browse the repository at this point in the history
  • Loading branch information
Svinokur committed Jun 21, 2021
1 parent ebfd8e9 commit 0e21bdb
Show file tree
Hide file tree
Showing 11 changed files with 53 additions and 81 deletions.
15 changes: 15 additions & 0 deletions changelog.txt
@@ -1,3 +1,18 @@
[3.13.0] 21/06/2021
This version provides some improvements and minor fixes.
This code was written and tested on Python 3.9.5

# Improvements

- Improved overall code optimization (improved drivers classes initialization)
- Improved getting current version of opera browser for Windows
- Improved getting latest version of edgedriver
- Improved unit-tests (remove unnecessary redefinition of variables)

# Fixes

- Fixed an issue with incorrect parametres initalization if multiply drivers were given

[3.12.3] 18/06/2021
This version provides some minor fixes.
This code was written and tested on Python 3.9.5
Expand Down
29 changes: 1 addition & 28 deletions selenium_driver_updater/_edgeDriver.py
Expand Up @@ -213,8 +213,6 @@ def __get_latest_version_edgedriver(self) -> Tuple[bool, str, str]:
result_run : bool = False
message_run : str = ''
latest_version : str = ''
stable_channel_element = None
latest_version_element = None
url = str(self.setting['EdgeDriver']['LinkLastRelease'])

try:
Expand All @@ -223,33 +221,8 @@ def __get_latest_version_edgedriver(self) -> Tuple[bool, str, str]:
if not result:
logging.error(message)
return result, message, latest_version

soup = BeautifulSoup(json_data, 'html.parser')

elements = soup.findAll('ul', attrs={'class' : 'bare driver-downloads'})
if len(elements) == 0:
elements = soup.findAll('div', attrs={'class' : 'bare driver-downloads'})

if len(elements) == 0:
message = f'len(elements): {len(elements)} is equal to zero, unable to determine latest version of edgedriver, maybe the class "bare driver-downloads" is changed'
logging.error(message)
return False, message, latest_version

stable_channel_text = 'stable ChannelCurrent'

for element in elements:
if stable_channel_text in element.text:
stable_channel_element = element
break

if not stable_channel_element:
message = f'Could not determine latest version of Edge Driver. Maybe the text "{stable_channel_text}" is changed'
logging.error(message)
return result_run, message, latest_version

latest_version_element = stable_channel_element.findAll('p', attrs={'class' : 'driver-download__meta'})[0].text

latest_version = re.findall(str(self.setting["Program"]["wedriverVersionPattern"]), str(latest_version_element))[0]
latest_version = re.findall(str(self.setting["Program"]["wedriverVersionPattern"]), json_data)[0]

logging.info(f'Latest version of edgedriver: {latest_version}')

Expand Down
12 changes: 6 additions & 6 deletions selenium_driver_updater/_setting.py
Expand Up @@ -68,7 +68,7 @@
r'reg query "HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstall\Google Chrome" /v version'] if platform.system() == 'Windows' else \
"google-chrome-stable" if platform.system() == 'Linux' else ''

chrome_browser_updater = fr'"C:\Program Files (x86)\Google\Update\GoogleUpdate.exe"' if platform.system() == 'Windows' else \
chrome_browser_updater = r'"C:\Program Files (x86)\Google\Update\GoogleUpdate.exe"' if platform.system() == 'Windows' else \
'open "/Library/Google/GoogleSoftwareUpdate/GoogleSoftwareUpdate.bundle/Contents/Helpers/GoogleSoftwareUpdateAgent.app"' if platform.system() == 'Darwin' else\
"sudo apt-get install google-chrome-stable" if platform.system() == 'Linux' else ''

Expand All @@ -93,14 +93,14 @@
edge_browser_path = '/Applications/Microsoft Edge.app/Contents/MacOS/Microsoft Edge' if platform.system() == 'Darwin' else\
'reg query "HKEY_CURRENT_USER\SOFTWARE\Microsoft\Edge\BLBeacon" /v version' if platform.system() == 'Windows' else ''

edge_browser_updater = fr'"C:\Program Files (x86)\Microsoft\EdgeUpdate\MicrosoftEdgeUpdate.exe"' if platform.system() == 'Windows' else \
edge_browser_updater = r'"C:\Program Files (x86)\Microsoft\EdgeUpdate\MicrosoftEdgeUpdate.exe"' if platform.system() == 'Windows' else \
'open "/Library/Application Support/Microsoft/MAU2.0/Microsoft AutoUpdate.app/Contents/MacOS/Microsoft Update Assistant.app"' if platform.system() == 'Darwin' else ''

edge_browser_updater_path = fr"C:\Program Files (x86)\Microsoft\EdgeUpdate\MicrosoftEdgeUpdate.exe" if platform.system() == 'Windows' else \
edge_browser_updater_path = r"C:\Program Files (x86)\Microsoft\EdgeUpdate\MicrosoftEdgeUpdate.exe" if platform.system() == 'Windows' else \
'/Library/Application Support/Microsoft/MAU2.0/Microsoft AutoUpdate.app/Contents/MacOS/Microsoft Update Assistant.app' if platform.system() == 'Darwin' else ''


opera_browser_path = r'REG QUERY "HKEY_USERS\S-1-5-21-3790059719-4236911619-2548269985-1000\Software\Microsoft\Windows\CurrentVersion\Uninstall"' if platform.system() == 'Windows' else \
opera_browser_path = r'reg query "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Uninstall" /f Opera' if platform.system() == 'Windows' else \
'/Applications/Opera.app/Contents/MacOS/Opera' if platform.system() == 'Darwin' else\
"opera" if platform.system() == 'Linux' else ''

Expand All @@ -121,7 +121,7 @@

@dataclass
class info:
version = "3.12.3"
version = "3.13.0"

setting = dict(
{
Expand Down Expand Up @@ -153,7 +153,7 @@ class info:
},
"EdgeDriver":
{
"LinkLastRelease" : 'https://developer.microsoft.com/en-us/microsoft-edge/tools/webdriver/',
"LinkLastRelease" : 'https://msedgewebdriverstorage.blob.core.windows.net/edgewebdriver/LATEST_STABLE',
"LinkLastReleaseFile" : edgedriver_latest_release,
"LastReleasePlatform" : edgedriver_platform_release,
"LinkAllReleases" : 'https://msedgewebdriverstorage.blob.core.windows.net/edgewebdriver?delimiter=%2F&maxresults=1000&restype=container&comp=list&_=1622636146441&timeout=60000',
Expand Down
44 changes: 15 additions & 29 deletions selenium_driver_updater/driverUpdater.py
Expand Up @@ -440,80 +440,66 @@ def __run_specific_driver(driver_name = '', filename = '', version = '', system_
try:

if not driver_name:
driver_name = info._driver_name if type(info._system_name) == str else ''
driver_name = info._driver_name if type(info._driver_name) == str else ''

if not filename:
filename = info._filename if type(info._system_name) == str else ''
filename = info._filename if type(info._filename) == str else ''

if not version:
version = info._version if type(info._system_name) == str else ''
version = info._version if type(info._version) == str else ''

if not system_name:
system_name = info._system_name if type(info._system_name) == str else ''

parametres = dict( upgrade=info._upgrade, chmod=info._chmod,
check_driver_is_up_to_date=info._check_driver_is_up_to_date,
filename=filename, version=version,
check_browser_is_up_to_date=info._check_browser_is_up_to_date, info_messages=info._info_messages,
system_name=system_name )

if DriverUpdater.chromedriver == driver_name:

chrome_driver = ChromeDriver(path=info._path, upgrade=info._upgrade, chmod=info._chmod,
check_driver_is_up_to_date=info._check_driver_is_up_to_date,
filename=filename, version=version,
check_browser_is_up_to_date=info._check_browser_is_up_to_date, info_messages=info._info_messages,
system_name=system_name)
chrome_driver = ChromeDriver(path=info._path, **parametres)
result, message, driver_path = chrome_driver.main()
if not result:
logging.error(message)
return result, message, driver_path

elif DriverUpdater.geckodriver == driver_name:

gecko_driver = GeckoDriver(path=info._path, upgrade=info._upgrade, chmod=info._chmod,
check_driver_is_up_to_date=info._check_driver_is_up_to_date,
filename=filename, version=version,
check_browser_is_up_to_date=info._check_browser_is_up_to_date, info_messages=info._info_messages,
system_name=system_name)
gecko_driver = GeckoDriver(path=info._path, **parametres)
result, message, driver_path = gecko_driver.main()
if not result:
logging.error(message)
return result, message, driver_path

elif DriverUpdater.operadriver == driver_name:

opera_driver = OperaDriver(path=info._path, upgrade=info._upgrade, chmod=info._chmod,
check_driver_is_up_to_date=info._check_driver_is_up_to_date,
filename=filename, version=version,
check_browser_is_up_to_date=info._check_browser_is_up_to_date, info_messages=info._info_messages,
system_name=system_name)
opera_driver = OperaDriver(path=info._path, **parametres)
result, message, driver_path = opera_driver.main()
if not result:
logging.error(message)
return result, message, driver_path

elif DriverUpdater.edgedriver == driver_name:

edge_driver = EdgeDriver(path=info._path, upgrade=info._upgrade, chmod=info._chmod,
check_driver_is_up_to_date=info._check_driver_is_up_to_date,
filename=filename, version=version,
check_browser_is_up_to_date=info._check_browser_is_up_to_date, info_messages=info._info_messages,
system_name=system_name)
edge_driver = EdgeDriver(path=info._path, **parametres)
result, message, driver_path = edge_driver.main()
if not result:
logging.error(message)
return result, message, driver_path

elif DriverUpdater.chromium_chromedriver == driver_name:

chromium_chromedriver = ChromiumChromeDriver(check_driver_is_up_to_date=info._check_driver_is_up_to_date,
check_browser_is_up_to_date=info._check_browser_is_up_to_date, info_messages=info._info_messages)
chromium_chromedriver = ChromiumChromeDriver(**parametres)
result, message, driver_path = chromium_chromedriver.main()
if not result:
logging.error(message)
return result, message, driver_path

elif DriverUpdater.phantomjs == driver_name:

phantomjs = PhantomJS(path=info._path, upgrade=info._upgrade, chmod=info._chmod,
check_driver_is_up_to_date=info._check_driver_is_up_to_date,
filename=filename, version=version, info_messages=info._info_messages,
system_name=system_name)
phantomjs = PhantomJS(path=info._path, **parametres)
result, message, driver_path = phantomjs.main()
if not result:
logging.error(message)
Expand Down
4 changes: 2 additions & 2 deletions selenium_driver_updater/test/chromeDriverTest.py
Expand Up @@ -229,8 +229,8 @@ def test16_check_chromedriver_is_up_to_date(self):
##@unittest.skip('Temporary not needed')
def test17_check_if_version_is_valid(self):
url = self.setting["ChromeDriver"]["LinkLastReleaseFile"].format(self.specific_version)
version_url = self.specific_version
result, message = self.chrome_driver._ChromeDriver__check_if_version_is_valid(url=url,version_url=version_url)

result, message = self.chrome_driver._ChromeDriver__check_if_version_is_valid(url=url,version_url=self.specific_version)
self.assertTrue(result, result)
self.assertEqual(len(message), 0, len(message))

Expand Down
Binary file modified selenium_driver_updater/test/drivers/edgedriver_test
Binary file not shown.
4 changes: 2 additions & 2 deletions selenium_driver_updater/test/edgeDriverTest.py
Expand Up @@ -214,8 +214,8 @@ def test15_check_if_edgedriver_is_up_to_date(self):
#@unittest.skip('Temporary not needed')
def test16_check_if_version_is_valid(self):
url = self.setting["EdgeDriver"]["LinkLastReleaseFile"].format(self.specific_version)
version_url = self.specific_version
result, message = self.edgedriver._EdgeDriver__check_if_version_is_valid(url=url,version_url=version_url)

result, message = self.edgedriver._EdgeDriver__check_if_version_is_valid(url=url,version_url=self.specific_version)
self.assertTrue(result, result)
self.assertEqual(len(message), 0, len(message))

Expand Down
7 changes: 3 additions & 4 deletions selenium_driver_updater/test/geckoDriverTest.py
Expand Up @@ -201,10 +201,9 @@ def test14_check_geckodriver_is_up_to_date(self):

##@unittest.skip('Temporary not needed')
def test15_check_if_version_is_valid(self):
version = "v" + self.specific_version
url = self.setting["GeckoDriver"]["LinkLastReleasePlatform"].format(version, version)
version_url = self.specific_version
result, message = self.gecko_driver._GeckoDriver__check_if_version_is_valid(url=url,version_url=version_url)
url = self.setting["GeckoDriver"]["LinkLastReleasePlatform"].format(self.specific_version, self.specific_version)

result, message = self.gecko_driver._GeckoDriver__check_if_version_is_valid(url=url,version_url=self.specific_version)
self.assertTrue(result, result)
self.assertEqual(len(message), 0, len(message))

Expand Down
7 changes: 3 additions & 4 deletions selenium_driver_updater/test/operaDriverTest.py
Expand Up @@ -200,10 +200,9 @@ def test14_check_if_operadriver_is_up_to_date(self):

##@unittest.skip('Temporary not needed')
def test15_check_if_version_is_valid(self):
version = self.specific_version
url = self.setting["OperaDriver"]["LinkLastReleasePlatform"].format(version)
version_url = self.specific_version
result, message = self.operadriver_failure._OperaDriver__check_if_version_is_valid(url=url,version_url=version_url)
url = self.setting["OperaDriver"]["LinkLastReleasePlatform"].format(self.specific_version)

result, message = self.operadriver_failure._OperaDriver__check_if_version_is_valid(url=url,version_url=self.specific_version)
self.assertTrue(result, result)
self.assertEqual(len(message), 0, len(message))

Expand Down
10 changes: 5 additions & 5 deletions selenium_driver_updater/test/settingTest.py
Expand Up @@ -76,7 +76,7 @@
r'reg query "HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstall\Google Chrome" /v version'] if platform.system() == 'Windows' else \
"google-chrome-stable" if platform.system() == 'Linux' else ''

chrome_browser_updater = fr'"C:\Program Files (x86)\Google\Update\GoogleUpdate.exe"' if platform.system() == 'Windows' else \
chrome_browser_updater = r'"C:\Program Files (x86)\Google\Update\GoogleUpdate.exe"' if platform.system() == 'Windows' else \
'open "/Library/Google/GoogleSoftwareUpdate/GoogleSoftwareUpdate.bundle/Contents/Helpers/GoogleSoftwareUpdateAgent.app"' if platform.system() == 'Darwin' else\
"sudo apt-get install google-chrome-stable" if platform.system() == 'Linux' else ''

Expand All @@ -101,14 +101,14 @@
edge_browser_path = '/Applications/Microsoft Edge.app/Contents/MacOS/Microsoft Edge' if platform.system() == 'Darwin' else\
'reg query "HKEY_CURRENT_USER\SOFTWARE\Microsoft\Edge\BLBeacon" /v version' if platform.system() == 'Windows' else ''

edge_browser_updater = fr'"C:\Program Files (x86)\Microsoft\EdgeUpdate\MicrosoftEdgeUpdate.exe"' if platform.system() == 'Windows' else \
edge_browser_updater = r'"C:\Program Files (x86)\Microsoft\EdgeUpdate\MicrosoftEdgeUpdate.exe"' if platform.system() == 'Windows' else \
'open "/Library/Application Support/Microsoft/MAU2.0/Microsoft AutoUpdate.app/Contents/MacOS/Microsoft Update Assistant.app"' if platform.system() == 'Darwin' else ''

edge_browser_updater_path = fr"C:\Program Files (x86)\Microsoft\EdgeUpdate\MicrosoftEdgeUpdate.exe" if platform.system() == 'Windows' else \
edge_browser_updater_path = r"C:\Program Files (x86)\Microsoft\EdgeUpdate\MicrosoftEdgeUpdate.exe" if platform.system() == 'Windows' else \
'/Library/Application Support/Microsoft/MAU2.0/Microsoft AutoUpdate.app/Contents/MacOS/Microsoft Update Assistant.app' if platform.system() == 'Darwin' else ''


opera_browser_path = r'REG QUERY "HKEY_USERS\S-1-5-21-3790059719-4236911619-2548269985-1000\Software\Microsoft\Windows\CurrentVersion\Uninstall"' if platform.system() == 'Windows' else \
opera_browser_path = r'reg query "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Uninstall" /f Opera' if platform.system() == 'Windows' else \
'/Applications/Opera.app/Contents/MacOS/Opera' if platform.system() == 'Darwin' else\
"opera" if platform.system() == 'Linux' else ''

Expand Down Expand Up @@ -193,7 +193,7 @@ def test03_check_values_params(self):
self.assertEqual(self.setting["OperaDriver"]["LastReleasePlatform"], operadriver_platform_release)
self.assertEqual(self.setting["OperaDriver"]["NamePlatformRelease"], operadriver_name_platform_release)

self.assertEqual(self.setting["EdgeDriver"]["LinkLastRelease"], 'https://developer.microsoft.com/en-us/microsoft-edge/tools/webdriver/')
self.assertEqual(self.setting["EdgeDriver"]["LinkLastRelease"], 'https://msedgewebdriverstorage.blob.core.windows.net/edgewebdriver/LATEST_STABLE')
self.assertEqual(self.setting["EdgeDriver"]["LinkLastReleaseFile"], edgedriver_latest_release)
self.assertEqual(self.setting["EdgeDriver"]["LastReleasePlatform"], edgedriver_platform_release)
self.assertEqual(self.setting["EdgeDriver"]["LinkAllReleases"], "https://msedgewebdriverstorage.blob.core.windows.net/edgewebdriver?delimiter=%2F&maxresults=1000&restype=container&comp=list&_=1622636146441&timeout=60000")
Expand Down
2 changes: 1 addition & 1 deletion setup.py
Expand Up @@ -23,7 +23,7 @@

setup(
name='selenium_driver_updater',
version='3.12.3',
version='3.13.0',
description='Download or update your Selenium driver binaries and their browsers automatically with this package',
long_description=long_description,
long_description_content_type='text/markdown',
Expand Down

0 comments on commit 0e21bdb

Please sign in to comment.