Skip to content

Commit

Permalink
Merge branch 'master' into master
Browse files Browse the repository at this point in the history
  • Loading branch information
dariopnc authored Mar 31, 2022
2 parents 06bc573 + 259cfdb commit 8b74525
Show file tree
Hide file tree
Showing 13 changed files with 147 additions and 23 deletions.
57 changes: 55 additions & 2 deletions .github/workflows/test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,10 @@ on:
- .github/workflows/deploy.yml
- .github/workflows/codeql-analysis.yml
- .github/workflows/FUNDING.yml
- setup.cfg
- setup.py
- webdriver_manager/__init__.py

pull_request:
branches:
- master
Expand All @@ -26,6 +30,9 @@ on:
- .github/workflows/deploy.yml
- .github/workflows/codeql-analysis.yml
- .github/workflows/FUNDING.yml
- setup.cfg
- setup.py
- webdriver_manager/__init__.py

jobs:
test:
Expand All @@ -37,15 +44,15 @@ jobs:
matrix:
python-version: ['3.6']
selenium-version: ['3.141.0']
os: [ macos-latest, windows-latest ]
os: [ windows-latest ]
wdm-log: ['']
include:
- python-version: '3.7'
selenium-version: '4.1.0'
os: ubuntu-latest
- python-version: '3.10'
selenium-version: '3.141.0'
os: ubuntu-latest
os: macos-latest
wdm-log: '0'

steps:
Expand Down Expand Up @@ -127,3 +134,49 @@ jobs:
with:
file: ./coverage.xml
name: ${{ matrix.os }}-py${{ matrix.python-version }}

test-negative:
runs-on: ${{ matrix.os }}
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
strategy:
fail-fast: false
matrix:
python-version: [ '3.6' ]
selenium-version: [ '3.141.0' ]
os: [ ubuntu-latest ]

steps:
- uses: actions/checkout@v2

- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v2
with:
python-version: ${{ matrix.python-version }}

- name: Uninstall browsers
run: |
sudo apt remove firefox google-chrome-stable -y
sudo apt autoremove && sudo apt autoclean -y
sudo apt clean
- name: Install Python dependencies
run: |
python -m pip install -U pip wheel
pip install pipenv
pipenv install --dev --skip-lock --python=${{ matrix.python-version }}
pipenv install selenium==${{ matrix.selenium-version }}
- name: Run tests on Linux (with xvfb)
if: runner.os == 'Linux'
uses: GabrielBB/xvfb-action@v1.0
with:
run: |
pipenv run py.test -sv --cov-config .coveragerc --cov-report xml --cov-report term:skip-covered --cov=webdriver_manager --tb=short tests_negative/
- name: Codecov Upload
uses: codecov/codecov-action@v1
if: always()
with:
file: ./coverage.xml
name: ${{ matrix.os }}-py${{ matrix.python-version }}
8 changes: 8 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,3 +1,11 @@
# Project
ssl_disabled/
custom/
.venv*/
venv*/
drivers/
drivers.json

# Created by .ignore support plugin (hsz.mobi)
### Python template
# Byte-compiled / optimized / DLL files
Expand Down
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.3
current_version = 3.5.4
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.3',
version='3.5.4',
description=('Library provides the way to automatically manage drivers for different browsers'),
author='Sergey Pirogov',
author_email='automationremarks@gmail.com',
Expand Down
6 changes: 4 additions & 2 deletions tests/test_downloader.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,10 +3,13 @@

import pytest

from tests.utils import driver_directory
from webdriver_manager.driver import ChromeDriver
from webdriver_manager.utils import download_file, save_file, ChromeType

project_root = os.path.dirname(os.path.dirname(__file__))

driver_directory = f"{project_root}{os.sep}.drivers"


@pytest.fixture()
def delete_drivers_dir():
Expand Down Expand Up @@ -42,4 +45,3 @@ def test_can_download_chrome_driver(delete_drivers_dir, version):
assert file.filename == "driver.zip"
archive = save_file(file, driver_directory)
assert archive.unpack(driver_directory) == ["chromedriver.exe"]

16 changes: 16 additions & 0 deletions tests/test_edge_driver.py
Original file line number Diff line number Diff line change
@@ -1,9 +1,12 @@
import os
import re

import pytest
from selenium import webdriver

from webdriver_manager.driver import EdgeChromiumDriver
from webdriver_manager.microsoft import EdgeChromiumDriverManager
from webdriver_manager.utils import PATTERN, ChromeType


def test_edge_manager_with_selenium():
Expand Down Expand Up @@ -61,3 +64,16 @@ def test_can_get_edge_driver_from_cache(os_type, specific_version):
os_type=os_type
).install()
assert os.path.exists(driver_path)


def test_get_stable_release_version():
pattern = PATTERN[ChromeType.MSEDGE]
edge_driver = EdgeChromiumDriverManager(
).driver

version = edge_driver.get_stable_release_version()
version = re.search(pattern, version).group(0)

assert len(version.split('.')) == 3, (
f"version '{version}' doesn't match version's count parts"
)
17 changes: 14 additions & 3 deletions tests/test_ie_driver.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,10 +6,7 @@


@pytest.mark.parametrize("version", [
"2.53.1",
"3.0",
"3.13.0",
"3.141.59",
"3.150.0",
# "3.150.1",
# "3.150.2",
Expand Down Expand Up @@ -52,3 +49,17 @@ def test_can_get_ie_driver_from_cache(os_type):
IEDriverManager(os_type=os_type).install()
driver_path = IEDriverManager(os_type=os_type).install()
assert os.path.exists(driver_path)


@pytest.mark.parametrize('version', ['', '3', '3.4.5.6'])
def test__get_divided_version_raises_exception(version):
iedriver = IEDriverManager().driver

with pytest.raises(ValueError) as exception:
iedriver._IEDriver__get_divided_version(version=version)

expected_msg = (
"Version must consist of major, minor and/or patch, "
"but given was: '{}'".format(version)
)
assert str(exception.value) == expected_msg
5 changes: 0 additions & 5 deletions tests/utils.py

This file was deleted.

Empty file added tests_negative/__init__.py
Empty file.
42 changes: 42 additions & 0 deletions tests_negative/test_browsers_not_installed.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
import os

import pytest
from selenium import webdriver
from selenium.common.exceptions import WebDriverException

from webdriver_manager.chrome import ChromeDriverManager
from webdriver_manager.firefox import GeckoDriverManager
from webdriver_manager.microsoft import EdgeChromiumDriverManager
from webdriver_manager.utils import OSType, os_name, ChromeType


def test_brave_not_installed():
binary_location = {
OSType.LINUX: "/usr/bin/brave-browser",
OSType.MAC: "/Applications/Brave Browser.app/Contents/MacOS/Brave Browser",
OSType.WIN: f"{os.getenv('LOCALAPPDATA')}\\BraveSoftware\\Brave-Browser\\Application\\brave.exe",
}[os_name()]

option = webdriver.ChromeOptions()
option.binary_location = binary_location
driver_path = ChromeDriverManager(chrome_type=ChromeType.BRAVE).install()
with pytest.raises(WebDriverException):
webdriver.Chrome(driver_path, options=option)


def test_chrome_not_installed():
driver_path = ChromeDriverManager().install()
with pytest.raises(WebDriverException):
webdriver.Chrome(driver_path)


def test_firefox_not_installed():
driver_path = GeckoDriverManager().install()
with pytest.raises(WebDriverException):
webdriver.Firefox(executable_path=driver_path)


def test_msedge_not_installed():
driver_path = EdgeChromiumDriverManager().install()
with pytest.raises(WebDriverException):
webdriver.Edge(driver_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.3'
__version__ = '3.5.4'
2 changes: 1 addition & 1 deletion webdriver_manager/driver.py
Original file line number Diff line number Diff line change
Expand Up @@ -230,7 +230,7 @@ def __get_divided_version(self, version):
else:
raise ValueError(
"Version must consist of major, minor and/or patch, "
"but given was: {version}".format(version=self.get_version())
"but given was: '{version}'".format(version=version)
)


Expand Down
11 changes: 4 additions & 7 deletions webdriver_manager/opera.py
Original file line number Diff line number Diff line change
Expand Up @@ -29,14 +29,11 @@ def __init__(self, version="latest",

def install(self):
driver_path = self._get_driver_path(self.driver)
if os.path.isfile(driver_path):
os.chmod(driver_path, 0o755)
return driver_path
else:
if not os.path.isfile(driver_path):
for name in os.listdir(driver_path):
if 'sha512_sum' in name:
os.remove(os.path.join(driver_path, name))
break
file_path = os.path.join(driver_path, os.listdir(driver_path)[0])
os.chmod(file_path, 0o755)
return file_path
driver_path = os.path.join(driver_path, os.listdir(driver_path)[0])
os.chmod(driver_path, 0o755)
return driver_path

0 comments on commit 8b74525

Please sign in to comment.