Skip to content

Commit

Permalink
release 3.5.2
Browse files Browse the repository at this point in the history
- Feature: finding EdgeDriver version for MAC & LINUX depends on MSEdge browser version and OS type (Closes #243, #242)
- Fix: Add rights to execute edgedriver binary on linux.
- Test Coverage: More tests for EdgeDriver & testing on LINUX/MAC in CI.
- bump version to 3.5.2
- delete requirements.txt
  • Loading branch information
aleksandr-kotlyar committed Oct 16, 2021
1 parent 007efd8 commit 5fa1f03
Show file tree
Hide file tree
Showing 10 changed files with 91 additions and 65 deletions.
13 changes: 12 additions & 1 deletion .github/workflows/test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -26,12 +26,23 @@ jobs:
- name: Install browsers on Linux
if: runner.os == 'Linux'
run: |
sudo apt-get update
sudo apt-get install software-properties-common apt-transport-https wget
wget -q https://packages.microsoft.com/keys/microsoft.asc -O- | sudo apt-key add -
sudo add-apt-repository "deb [arch=amd64] https://packages.microsoft.com/repos/edge stable main"
sudo apt-get update && sudo apt install microsoft-edge-beta
microsoft-edge --version
wget -qO- https://deb.opera.com/archive.key | sudo apt-key add -
sudo add-apt-repository "deb [arch=i386,amd64] https://deb.opera.com/opera-stable/ stable non-free"
sudo apt-get update
sudo apt-get -y --no-install-recommends install opera-stable chromium-browser
sudo apt-get -y --no-install-recommends install opera-stable
opera --version
sudo apt-get install chromium-browser
chromium --version
- name: Install browsers on Windows
if: runner.os == 'Windows'
shell: powershell
Expand Down
27 changes: 16 additions & 11 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,24 +1,29 @@
# Changelog

## 3.5.2
- Feature: Better finding EdgeDriver version for MAC & LINUX depends on MSEdge browser version and OS type [#243](https://github.com/SergeyPirogov/webdriver_manager/issues/243), Fix for [#242](https://github.com/SergeyPirogov/webdriver_manager/issues/242)
- Fix: Add rights to execute edgedriver binary on linux.
- Test Coverage: More tests for EdgeDriver
---
## 3.5.1
- Fix huge typo in IEDriver (appeared accidentally in 3.5.0 version)
- Adopt finding latest IEDriverSever for irregular releases in selenium.

- Adopt finding latest IEDriverSever for irregular releases in selenium ([#247](https://github.com/SergeyPirogov/webdriver_manager/issues/247))
---
## 3.5.0
### Fixes
- Fix: WinError6 while executing script, packed in .exe by pyinstaller (#198)
- Fix: stdio problem when making exe using pyinstaller with noconsole flag (#198)
- Fix: error with execution right on linux afer extraction from zip (#208)
- Fix: In Manager.DriverManager constructor named argument log_level is never passed to log() (#172
- Fix: first-line not hidden when logs disabled (#212)
- Fix: WinError6 while executing script, packed in .exe by pyinstaller ([#198](https://github.com/SergeyPirogov/webdriver_manager/issues/198))
- Fix: stdio problem when making exe using pyinstaller with noconsole flag ([#198](https://github.com/SergeyPirogov/webdriver_manager/issues/198))
- Fix: error with execution right on linux afer extraction from zip ([#208](https://github.com/SergeyPirogov/webdriver_manager/issues/208))
- Fix: In Manager.DriverManager constructor named argument log_level is never passed to log() (#[172](https://github.com/SergeyPirogov/webdriver_manager/issues/172))
- Fix: first-line not hidden when logs disabled ([#212](https://github.com/SergeyPirogov/webdriver_manager/issues/212))

### Features
- Download IEDriverServer from GitHub (#227)
- Download IEDriverServer from GitHub ([#227](https://github.com/SergeyPirogov/webdriver_manager/issues/227))

### Other
- webdriver_manager now tests on 3.6, **3.7, 3.8, 3.9, 3.10** (#235)
- webdriver_manager now supports not only 3.6, 3.7, 3.8, but also **3.9, 3.10** (#235) (tbh always has been)
- webdriver_manager now releases to pypi by clicking "Publish GitHub release" button (#238)
- webdriver_manager now tests on 3.6, **3.7, 3.8, 3.9, 3.10** ([#235](https://github.com/SergeyPirogov/webdriver_manager/issues/235))
- webdriver_manager now supports not only 3.6, 3.7, 3.8, but also **3.9, 3.10** ([#235](https://github.com/SergeyPirogov/webdriver_manager/issues/235)) (tbh always has been)
- webdriver_manager now releases to pypi by clicking "Publish GitHub release" button ([#238](https://github.com/SergeyPirogov/webdriver_manager/issues/238))
---

lots releases ago...
Expand Down
6 changes: 0 additions & 6 deletions requirements.txt

This file was deleted.

2 changes: 1 addition & 1 deletion setup.cfg
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
[bumpversion]
current_version = 3.5.1
current_version = 3.5.2
commit = True
tag = True

Expand Down
2 changes: 1 addition & 1 deletion setup.py
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@
long_description_content_type="text/markdown",
packages=setuptools.find_packages(exclude=['tests']),
include_package_data=True,
version='3.5.1',
version='3.5.2',
description=('Library provides the way to automatically manage drivers for different browsers'),
author='Sergey Pirogov',
author_email='automationremarks@gmail.com',
Expand Down
55 changes: 26 additions & 29 deletions tests/test_edge_driver.py
Original file line number Diff line number Diff line change
@@ -1,56 +1,53 @@
import os

import pytest
from selenium import webdriver

from webdriver_manager.microsoft import EdgeChromiumDriverManager
from webdriver_manager.utils import os_name, os_type


# TODO: set 'if os_name() != 'linux':
# when edge > 82 is installed on mac os worker
def test_edge_manager_with_selenium():
if os_name() == 'win':
driver_path = EdgeChromiumDriverManager(os_type=os_type()).install()
driver = webdriver.Edge(executable_path=driver_path)
driver.get("http://automation-remarks.com")
driver.quit()
else:
driver_path = EdgeChromiumDriverManager(os_type="win32").install()
assert os.path.exists(driver_path)
driver_path = EdgeChromiumDriverManager().install()

driver = webdriver.Edge(executable_path=driver_path, capabilities={})

driver.get("http://automation-remarks.com")
driver.quit()


def test_edge_manager_with_wrong_version():
with pytest.raises(ValueError) as ex:
driver_path = EdgeChromiumDriverManager("0.2",
os_type='win64').install()
driver_path = EdgeChromiumDriverManager(
version="0.2",
os_type='win64',
).install()
driver = webdriver.Edge(executable_path=driver_path)
driver.quit()
assert "There is no such driver by url "\
"https://msedgedriver.azureedge.net/0.2/edgedriver_win64.zip" in \
ex.value.args[0]

assert (
"There is no such driver by url "
"https://msedgedriver.azureedge.net/0.2/edgedriver_win64.zip"
) in ex.value.args[0]


# TODO: add "mac64" when https://msedgedriver.azureedge.net/LATEST_STABLE
# return edgedriver > 82
# see:
# https://msedgewebdriverstorage.z22.web.core.windows.net/?prefix=82.0.418.0/
@pytest.mark.parametrize('os_type', ['win32', 'win64'])
@pytest.mark.parametrize('os_type', ['win32', 'win64', 'linux64', 'mac64'])
def test_can_download_edge_driver(os_type):
path = EdgeChromiumDriverManager(os_type=os_type).install()
assert os.path.exists(path)


# TODO: add "mac64" when https://msedgedriver.azureedge.net/LATEST_STABLE
# return edgedriver > 82
# see:
# https://msedgewebdriverstorage.z22.web.core.windows.net/?prefix=82.0.418.0/
@pytest.mark.parametrize('os_type', ['win32', 'win64'])
@pytest.mark.parametrize('os_type', ['win32', 'win64', 'mac64', 'linux64'])
def test_can_get_edge_driver_from_cache(os_type):
EdgeChromiumDriverManager(os_type=os_type).install()
driver_path = EdgeChromiumDriverManager(os_type=os_type).install()
assert os.path.exists(driver_path)


def test_edge_with_specific_version():
bin_path = EdgeChromiumDriverManager("77.0.189.3",
os_type='win64').install()
@pytest.mark.parametrize('os_type', ['win32', 'win64', 'mac64', 'linux64'])
@pytest.mark.parametrize('specific_version', ['86.0.600.0'])
def test_edge_with_specific_version(os_type, specific_version):
bin_path = EdgeChromiumDriverManager(
version=specific_version,
os_type=os_type,
).install()
assert os.path.exists(bin_path)
2 changes: 1 addition & 1 deletion webdriver_manager/__init__.py
Original file line number Diff line number Diff line change
@@ -1 +1 @@
__version__ = '3.5.1'
__version__ = '3.5.2'
38 changes: 25 additions & 13 deletions webdriver_manager/driver.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
from webdriver_manager.logger import log
from webdriver_manager.utils import (
validate_response,
chrome_version,
get_browser_version_from_os,
ChromeType,
os_name,
OSType,
Expand Down Expand Up @@ -52,7 +52,7 @@ def __init__(self, name, version, os_type, url, latest_release_url,
super(ChromeDriver, self).__init__(name, version, os_type, url,
latest_release_url)
self.chrome_type = chrome_type
self.browser_version = chrome_version(chrome_type)
self.browser_version = get_browser_version_from_os(chrome_type)

def get_os_type(self):
if "win" in super().get_os_type():
Expand Down Expand Up @@ -264,18 +264,30 @@ def tagged_release_url(self, version):


class EdgeChromiumDriver(Driver):
def __init__(self, name, version, os_type, url, latest_release_url):
super(EdgeChromiumDriver, self).__init__(name, version, os_type, url,
latest_release_url)
self.browser_version = ""
def __init__(
self,
name,
version,
os_type,
url,
latest_release_url,
):
super(EdgeChromiumDriver, self).__init__(
name,
version,
os_type,
url,
latest_release_url,
)
self.browser_version = get_browser_version_from_os(ChromeType.MSEDGE)

def get_latest_release_version(self):
# type: () -> str
if os_name() == OSType.LINUX:
latest_release_url = "https://msedgedriver.azureedge.net/LATEST_STABLE"
else:
major_edge_version = chrome_version(ChromeType.MSEDGE).split(".")[0]
latest_release_url = self._latest_release_url + '_' + major_edge_version
def get_latest_release_version(self) -> str:
major_edge_version = self.browser_version.split(".")[0]
latest_release_url = {
OSType.WIN in self.get_os_type(): f'{self._latest_release_url}_{major_edge_version}_WINDOWS',
OSType.MAC in self.get_os_type(): f'{self._latest_release_url}_{major_edge_version}_MACOS',
OSType.LINUX in self.get_os_type(): f'{self._latest_release_url}_{major_edge_version}_LINUX',
}[True]
resp = requests.get(latest_release_url)
validate_response(resp)
return resp.text.rstrip()
7 changes: 6 additions & 1 deletion webdriver_manager/microsoft.py
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
import os

from webdriver_manager import utils
from webdriver_manager.driver import EdgeChromiumDriver
from webdriver_manager.driver import IEDriver
Expand Down Expand Up @@ -55,4 +57,7 @@ def __init__(
)

def install(self):
return self._get_driver_path(self.driver)
driver_path = self._get_driver_path(self.driver)

os.chmod(driver_path, 0o755)
return driver_path
4 changes: 3 additions & 1 deletion webdriver_manager/utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -126,7 +126,8 @@ def linux_browser_apps_to_cmd(*apps: str) -> str:
return ' || '.join(list(map(lambda i: f'{i} --version{ignore_errors_cmd_part}', apps)))


def chrome_version(browser_type=ChromeType.GOOGLE):
def get_browser_version_from_os(browser_type=None):
"""Return installed browser version."""
pattern = r'\d+\.\d+\.\d+'

cmd_mapping = {
Expand All @@ -141,6 +142,7 @@ def chrome_version(browser_type=ChromeType.GOOGLE):
OSType.WIN: r'reg query "HKLM\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\Google Chrome" /v version'
},
ChromeType.MSEDGE: {
OSType.LINUX: linux_browser_apps_to_cmd('microsoft-edge', 'microsoft-edge-stable', 'microsoft-edge-beta', 'microsoft-edge-dev'),
OSType.MAC: r'/Applications/Microsoft\ Edge.app/Contents/MacOS/Microsoft\ Edge --version',
OSType.WIN: r'reg query "HKEY_CURRENT_USER\SOFTWARE\Microsoft\Edge\BLBeacon" /v version',
}
Expand Down

0 comments on commit 5fa1f03

Please sign in to comment.