Skip to content

Commit d40db8b

Browse files
committed
Add webdriver_extended.py, refactor
1 parent 1e7c24f commit d40db8b

File tree

6 files changed

+38
-28
lines changed

6 files changed

+38
-28
lines changed

config.json

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
2-
"browser": "firefox",
3-
"headless_mode": true,
4-
"tested_page": "http://www.phptravels.net/",
2+
"browser": "chrome",
3+
"headless_mode": false,
4+
"base_url": "http://www.phptravels.net/",
55
"timeout": 10
66
}

extensions/webdriver_extended.py

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
from selenium.webdriver.support.event_firing_webdriver import EventFiringWebDriver
2+
3+
4+
class WebDriverExtended(EventFiringWebDriver):
5+
def __init__(self, driver, event_listener, config):
6+
super().__init__(driver, event_listener)
7+
self.base_url = config["base_url"]
8+
9+
def open(self):
10+
self.get(self.base_url)

pages/base_page.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,5 +2,5 @@ class BasePage:
22
def __init__(self, driver):
33
self.driver = driver
44

5-
def open_home_page(self, config):
6-
self.driver.get(config["tested_page"])
5+
def open(self):
6+
self.driver.open()

tests/conftest.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
CONFIG_PATH = "../config.json"
1010
DEFAULT_WAIT_TIME = 10
1111
SUPPORTED_BROWSERS = ["chrome", "firefox", "edge"]
12-
DEFAULT_WEBSITE = "http://www.google.com/"
12+
DEFAULT_URL = "http://www.google.com/"
1313

1414

1515
@pytest.fixture(scope='session')
@@ -33,13 +33,13 @@ def wait_time_setup(config):
3333

3434

3535
@pytest.fixture(scope='session')
36-
def website_setup(config):
37-
return config['tested_page'] if 'tested_page' in config else DEFAULT_WEBSITE
36+
def url_setup(config):
37+
return config["base_url"] if "base_url" in config else DEFAULT_URL
3838

3939

4040
@pytest.fixture()
4141
def setup(request, config):
42-
driver = DriverFactory.get_driver(config["browser"], config["headless_mode"])
42+
driver = DriverFactory.get_driver(config)
4343
driver.implicitly_wait(config["timeout"])
4444
request.cls.driver = driver
4545
before_failed = request.session.testsfailed

tests/test_log_in.py

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,14 +4,14 @@
44
from pages.login_page import LogInPage
55

66

7-
@pytest.mark.usefixtures("setup", "website_setup")
7+
@pytest.mark.usefixtures("setup")
88
class TestLogIn:
99

1010
@allure.title("Login with valid data test")
1111
@allure.description("This is test of login with valid data")
12-
def test_login_passed(self, config):
12+
def test_login_passed(self):
1313
log_in_page = LogInPage(self.driver)
14-
log_in_page.open_home_page(config)
14+
log_in_page.open()
1515
log_in_page.expand_account_menu()
1616
log_in_page.open_login_page()
1717
log_in_page.set_user_inputs("[email protected]", "demouser")
@@ -22,9 +22,9 @@ def test_login_passed(self, config):
2222

2323
@allure.title("Login with invalid email test")
2424
@allure.description("This is test of login with invalid email")
25-
def test_login_failed(self, config):
25+
def test_login_failed(self,):
2626
log_in_page = LogInPage(self.driver)
27-
log_in_page.open_home_page(config)
27+
log_in_page.open()
2828
log_in_page.expand_account_menu()
2929
log_in_page.open_login_page()
3030
log_in_page.set_user_inputs("[email protected]", "demouser")

utils/driver_factory.py

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,43 +1,43 @@
11
from selenium import webdriver
2-
from selenium.webdriver.support.event_firing_webdriver import EventFiringWebDriver
32
from webdriver_manager.chrome import ChromeDriverManager
43
from webdriver_manager.firefox import GeckoDriverManager
54
from webdriver_manager.microsoft import EdgeChromiumDriverManager
65
from helpers.web_driver_listener import WebDriverListener
76
from msedge.selenium_tools import EdgeOptions, Edge
7+
from extensions.webdriver_extended import WebDriverExtended
88

99

1010
class DriverFactory:
1111
@staticmethod
12-
def get_driver(browser, headless_mode=False) -> EventFiringWebDriver:
13-
if browser == "chrome":
12+
def get_driver(config) -> WebDriverExtended:
13+
if config["browser"] == "chrome":
1414
options = webdriver.ChromeOptions()
1515
options.add_argument("start-maximized")
16-
if headless_mode is True:
16+
if config["headless_mode"] is True:
1717
options.add_argument("--headless")
18-
driver = EventFiringWebDriver(
18+
driver = WebDriverExtended(
1919
webdriver.Chrome(ChromeDriverManager().install(), options=options),
20-
WebDriverListener()
20+
WebDriverListener(), config
2121
)
2222
return driver
23-
elif browser == "firefox":
23+
elif config["browser"] == "firefox":
2424
options = webdriver.FirefoxOptions()
25-
if headless_mode is True:
25+
if config["headless_mode"] is True:
2626
options.headless = True
27-
driver = EventFiringWebDriver(
27+
driver = WebDriverExtended(
2828
webdriver.Firefox(executable_path=GeckoDriverManager().install(), options=options),
29-
WebDriverListener()
29+
WebDriverListener(), config
3030
)
3131
return driver
32-
elif browser == "edge":
32+
elif config["browser"] == "edge":
3333
options = EdgeOptions()
3434
options.use_chromium = True
35-
if headless_mode is True:
35+
if config["headless_mode"] is True:
3636
options.headless = True
3737
driver_path = EdgeChromiumDriverManager().install()
38-
driver = EventFiringWebDriver(
38+
driver = WebDriverExtended(
3939
Edge(executable_path=driver_path, options=options),
40-
WebDriverListener()
40+
WebDriverListener(), config
4141
)
4242
return driver
4343
raise Exception("Provide valid driver name")

0 commit comments

Comments
 (0)