Skip to content

Commit acdd47a

Browse files
authored
Merge pull request #7 from startrug/SPF-05
SPF-05: Add event logger
2 parents 1633b6b + 10d0bab commit acdd47a

11 files changed

+70
-65
lines changed

extensions/__init__.py

Whitespace-only changes.

extensions/screenshot_extensions.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
class ScreenShotExtensions():
2+
@staticmethod
3+
def take_standard_screenshot(driver, file_name):
4+
driver.save_screenshot(file_name, False)

helpers/__init__.py

Whitespace-only changes.

helpers/web_driver_listener.py

Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
import logging
2+
import datetime
3+
from selenium.webdriver.support.events import AbstractEventListener
4+
5+
log_filename = datetime.datetime.now().strftime("%Y%m%d_%H%M%S")
6+
logging.basicConfig(
7+
# log file will be created in "tests" directory. Feel free to change the path or filename
8+
filename=f"{log_filename}.log",
9+
format="%(asctime)s: %(levelname)s: %(message)s",
10+
level=logging.INFO
11+
)
12+
13+
14+
class WebDriverListener(AbstractEventListener):
15+
def __init__(self):
16+
self.logger = logging.getLogger("selenium")
17+
self.logger.setLevel(logging.INFO)
18+
19+
def before_navigate_to(self, url, driver):
20+
self.logger.info(f"Navigating to {url}")
21+
22+
def after_navigate_to(self, url, driver):
23+
self.logger.info(f"Navigated to {url}")
24+
25+
def before_find(self, by, value, driver):
26+
self.logger.info(f"Searching for element by {by} {value}")
27+
28+
def after_find(self,by, value, driver):
29+
self.logger.info(f"Element by {by} {value} found")
30+
31+
def before_click(self, element, driver):
32+
if element.get_attribute("text") is None:
33+
self.logger.info(f"Clicking on {element.get_attribute('class')}")
34+
else:
35+
self.logger.info(f"Clicking on {element.get_attribute('text')}")
36+
37+
def after_click(self, element, driver):
38+
if element.get_attribute("text") is None:
39+
self.logger.info(f"{element.get_attribute('class')} clicked")
40+
else:
41+
self.logger.info(f"{element.get_attribute('text')} clicked")
42+
43+
def before_change_value_of(self, element, driver):
44+
self.logger.info(f"{element.get_attribute('text')} value changed")
45+
46+
def before_quit(self, driver):
47+
self.logger.info("Driver quitting")
48+
49+
def after_quit(self, driver):
50+
self.logger.info("Driver quitted")
51+
52+
def on_exception(self, exception, driver):
53+
self.logger.info(exception)

pages/login_page.py

Lines changed: 0 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,43 +1,31 @@
1-
import logging
2-
31
import allure
42
from selenium.webdriver.common.keys import Keys
53
from locators.locators import LogInLocators
64

75

86
class LogInPage:
9-
107
def __init__(self, driver):
118
self.driver = driver
12-
self.logger = logging.getLogger(__name__)
139

1410
@allure.step("Opening phptravels.net website")
1511
def open_page(self):
16-
self.logger.info("Opening phptravels.net website")
1712
self.driver.get("http://www.phptravels.net/")
1813

1914
@allure.step("Expanding account menu")
2015
def expand_account_menu(self):
21-
self.logger.info("Expanding account menu")
2216
self.driver.find_element(*LogInLocators.user_account_menu).click()
2317

2418
@allure.step("Opening login page")
2519
def open_login_page(self):
26-
self.logger.info("Opening login page")
2720
self.driver.find_element(*LogInLocators.login_link).click()
2821

2922
@allure.step("Login with email: '1'")
3023
def set_user_inputs(self, email, password):
31-
self.logger.info("Setting user email to {}".format(email) + " and password")
3224
self.driver.find_element(*LogInLocators.email_input).click()
3325
self.driver.find_element(*LogInLocators.email_input).send_keys(email)
3426
self.driver.find_element(*LogInLocators.password_input).click()
3527
self.driver.find_element(*LogInLocators.password_input).send_keys(password, Keys.ENTER)
3628

3729
@allure.step("Logout")
3830
def logout(self):
39-
self.logger.info("Logout")
4031
self.driver.find_element(*LogInLocators.logout_link).click()
41-
42-
43-

pages/search_flights_form.py

Lines changed: 0 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
import logging
21
import allure
32
from allure_commons.types import AttachmentType
43
from selenium.webdriver.common.by import By
@@ -10,56 +9,46 @@ class SearchFlightsForm:
109

1110
def __init__(self, driver):
1211
self.driver = driver
13-
self.logger = logging.getLogger(__name__)
1412

1513
@allure.step("Opening phptravels.net website")
1614
def open_page(self):
17-
self.logger.info("Opening phptravels.net website")
1815
self.driver.get("http://www.phptravels.net/")
1916

2017
@allure.step("Opening Flights tab")
2118
def open_flights_tab(self):
22-
self.logger.info("Opening Flights tab")
2319
self.driver.find_element(*SearchTabsLocators.flights_tab).click()
2420

2521
@allure.step("Selecting trip type to: '{1}'")
2622
def set_trip_type(self, trip_type):
27-
self.logger.info(f"Selecting trip type to: '{trip_type}'")
2823
self.driver.find_element(By.XPATH, f"//label[text()='{trip_type}']").click()
2924

3025
@allure.step("Selecting one way trip")
3126
def set_one_way(self):
32-
self.logger.info("Selecting one way trip")
3327
self.driver.find_element(*SearchFlightsFormLocators.one_way_radio).click()
3428

3529
@allure.step("Selecting round trip")
3630
def set_round_trip(self):
37-
self.logger.info("Selecting round trip")
3831
self.driver.find_element(*SearchFlightsFormLocators.round_trip_radio).click()
3932

4033
@allure.step("Setting cabin class")
4134
def set_cabin_class(self, cabin_class):
42-
self.logger.info("Setting cabin class")
4335
self.driver.find_element(*SearchFlightsFormLocators.cabinclass_dropdown).click()
4436
self.driver.find_element(By.XPATH, f"//li[text()='{cabin_class}']").click()
4537

4638
@allure.step("Setting location from: '{1}'")
4739
def set_loc_from(self, loc_from):
48-
self.logger.info(f"Setting location from: {loc_from}")
4940
self.driver.find_element(*SearchFlightsFormLocators.loc_from_inactive).click()
5041
self.driver.find_element(*SearchFlightsFormLocators.loc_input_active).send_keys(loc_from)
5142
self.driver.find_element(By.XPATH, f"//div[@class='select2-result-label'][contains(.,'({loc_from})')]").click()
5243

5344
@allure.step("Setting location to: '{1}'")
5445
def set_loc_to(self, loc_to):
55-
self.logger.info(f"Setting location to: {loc_to}")
5646
self.driver.find_element(*SearchFlightsFormLocators.loc_to_inactive).click()
5747
self.driver.find_element(*SearchFlightsFormLocators.loc_input_active).send_keys(loc_to)
5848
self.driver.find_element(By.XPATH, f"//div[@class='select2-result-label'][contains(.,'({loc_to})')]").click()
5949

6050
@allure.step("Setting start date to '{1}'/'{2}'/'{3}'")
6151
def set_start_date(self, start_year, start_month, start_day):
62-
self.logger.info(f"Setting start date to {start_year}/{start_month}/{start_day}")
6352
self.driver.find_element(*SearchFlightsFormLocators.flight_date_start).click()
6453
current_year = get_datestamp(self.driver, SearchFlightsFormLocators, ["datepicker_nav_title_years"])
6554
if current_year != start_year:
@@ -76,7 +65,6 @@ def set_start_date(self, start_year, start_month, start_day):
7665

7766
@allure.step("Setting end date to '{1}'/'{2}'/'{3}'")
7867
def set_end_date(self, end_year, end_month, end_day):
79-
self.logger.info(f"Setting end date to {end_year}/{end_month}/{end_day}")
8068
current_year = get_datestamp(self.driver, SearchFlightsFormLocators, ["datepicker_nav_title_years"])
8169
if current_year != end_year:
8270
self.driver.find_element(*SearchFlightsFormLocators.datepicker_nav_title_end).click()
@@ -96,36 +84,30 @@ def set_end_date(self, end_year, end_month, end_day):
9684

9785
@allure.step("Setting number of adults to '{1}'")
9886
def set_adults_number(self, adults_num):
99-
self.logger.info(f"Setting number of adults: {adults_num}")
10087
set_travellers_number(self.driver, adults_num, SearchFlightsFormLocators,
10188
["adults_input_value", "adults_add", "adults_sub"])
10289

10390
@allure.step("Setting number of adults to '{1}'")
10491
def set_kids_number(self, kids_num):
105-
self.logger.info(f"Setting number of kids: {kids_num}")
10692
set_travellers_number(self.driver, kids_num, SearchFlightsFormLocators,
10793
["kids_input_value", "kids_add", "kids_sub"])
10894

10995
@allure.step("Setting number of infants to '{1}'")
11096
def set_infants_number(self, infants_num):
111-
self.logger.info(f"Setting number of infants: {infants_num}")
11297
set_travellers_number(self.driver, infants_num, SearchFlightsFormLocators,
11398
["infants_input_value", "infants_add", "infants_sub"])
11499

115100
@allure.step("Performing search")
116101
def search_perform(self):
117-
self.logger.info("Performing search")
118102
self.driver.find_element(*SearchFlightsFormLocators.search_btn).click()
119103
allure.attach(self.driver.get_screenshot_as_png(), name="search_results", attachment_type=AttachmentType.PNG)
120104

121105
@allure.step("Getting input start date")
122106
def get_start_date(self):
123107
start_date = self.driver.find_element(*SearchFlightsFormLocators.flight_date_start)
124108
start_date_val = start_date.get_attribute("value")
125-
self.logger.info("Selected start date is: ", start_date_val)
126109

127110
@allure.step("Getting input end date")
128111
def get_end_date(self):
129112
end_date = self.driver.find_element(*SearchFlightsFormLocators.flight_date_end)
130113
end_date_val = end_date.get_attribute("value")
131-
self.logger.info("Selected start date is: ", end_date_val)

pages/search_hotels_form.py

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
import logging
21
import allure
32
from allure_commons.types import AttachmentType
43
from locators.locators import SearchHotelsFormLocators
@@ -9,42 +8,35 @@ class SearchHotelsForm:
98

109
def __init__(self, driver):
1110
self.driver = driver
12-
self.logger = logging.getLogger(__name__)
1311

1412
@allure.step("Opening phptravels.net website")
1513
def open_page(self):
16-
self.logger.info("Opening phptravels.net website")
1714
self.driver.get("http://www.phptravels.net/")
1815

1916
@allure.step("Setting destination to '{1}'")
2017
def set_destination(self, destination):
21-
self.logger.info(f"Setting destination: {destination}")
2218
self.driver.find_element(*SearchHotelsFormLocators.destination_inactive).click()
2319
self.driver.find_element(*SearchHotelsFormLocators.destination_input).send_keys(destination)
2420
self.driver.find_element(*SearchHotelsFormLocators.search_match).click()
2521

2622
@allure.step("Setting date range from '{1}' to '{2}'")
2723
def set_date_range(self, check_in, check_out):
28-
self.logger.info(f"Setting date range from {check_in} to {check_out}")
2924
self.driver.find_element(*SearchHotelsFormLocators.checkin_input).click()
3025
self.driver.find_element(*SearchHotelsFormLocators.checkin_input).send_keys(check_in)
3126
self.driver.find_element(*SearchHotelsFormLocators.checkout_input).click()
3227
self.driver.find_element(*SearchHotelsFormLocators.checkout_input).send_keys(check_out)
3328

3429
@allure.step("Setting number of adults to '{1}'")
3530
def set_adults_number(self, adults_num):
36-
self.logger.info(f"Setting number of adults: {adults_num}")
3731
set_travellers_number(self.driver, adults_num, SearchHotelsFormLocators,
3832
["adults_input_value", "adults_add", "adults_sub"])
3933

4034
@allure.step("Setting number of adults to '{1}'")
4135
def set_kids_number(self, kids_num):
42-
self.logger.info(f"Setting number of kids: {kids_num}")
4336
set_travellers_number(self.driver, kids_num, SearchHotelsFormLocators,
4437
["kids_input_value", "kids_add", "kids_sub"])
4538

4639
@allure.step("Performing search")
4740
def search_perform(self):
48-
self.logger.info("Performing search")
4941
self.driver.find_element(*SearchHotelsFormLocators.search_btn).click()
5042
allure.attach(self.driver.get_screenshot_as_png(), name="search_results", attachment_type=AttachmentType.PNG)

pages/search_tours_form.py

Lines changed: 0 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,3 @@
1-
import logging
2-
import pytest
31
import allure
42
from allure_commons.types import AttachmentType
53
from selenium.webdriver.common.by import By
@@ -12,35 +10,29 @@ class SearchToursForm:
1210

1311
def __init__(self, driver):
1412
self.driver = driver
15-
self.logger = logging.getLogger(__name__)
1613

1714
@allure.step("Opening phptravels.net website")
1815
def open_page(self):
19-
self.logger.info("Opening phptravels.net website")
2016
self.driver.get("http://www.phptravels.net/")
2117

2218
@allure.step("Opening Tours tab")
2319
def open_tours_tab(self):
24-
self.logger.info("Opening Tours tab")
2520
self.driver.find_element(*SearchTabsLocators.tours_tab).click()
2621

2722
@allure.step("Setting tour destination: '{1}'")
2823
def set_tour_destination(self, tour_destination):
29-
self.logger.info(f"Setting tour destination to: {tour_destination}")
3024
self.driver.find_element(*SearchToursFormLocators.tour_destination_inactive).click()
3125
self.driver.find_element(*SearchToursFormLocators.tour_destination_active).send_keys(tour_destination)
3226
self.driver.find_element(By.XPATH, f"//div[@class='select2-result-label']"
3327
f"[contains(.,'{tour_destination}')]").click()
3428

3529
@allure.step("Setting tour type: '{1}'")
3630
def set_tour_type(self, tour_type):
37-
self.logger.info(f"Setting tour type to: {tour_type}")
3831
self.driver.find_element(*SearchToursFormLocators.tour_type_dropdown).click()
3932
self.driver.find_element(*SearchToursFormLocators.tour_type_input).send_keys(tour_type, Keys.ENTER)
4033

4134
@allure.step("Setting tour date to '{1}'/'{2}'/'{3}'")
4235
def set_date(self, start_year, start_month, start_day):
43-
self.logger.info(f"Setting tour date to {start_year}/{start_month}/{start_day}")
4436
self.driver.find_element(*SearchToursFormLocators.tour_date).click()
4537
current_year = get_datestamp(self.driver, SearchToursFormLocators, ["datepicker_nav_title_years"])
4638
if current_year != start_year:
@@ -57,12 +49,10 @@ def set_date(self, start_year, start_month, start_day):
5749

5850
@allure.step("Setting number of adults to '{1}'")
5951
def set_adults_number(self, adults_num):
60-
self.logger.info(f"Setting number of adults: {adults_num}")
6152
set_travellers_number(self.driver, adults_num, SearchToursFormLocators,
6253
["adults_input_value", "adults_add", "adults_sub"])
6354

6455
@allure.step("Performing search")
6556
def search_perform(self):
66-
self.logger.info("Performing search")
6757
self.driver.find_element(*SearchToursFormLocators.search_btn).click()
6858
allure.attach(self.driver.get_screenshot_as_png(), name="search_results", attachment_type=AttachmentType.PNG)

pages/search_transfers_form.py

Lines changed: 0 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,3 @@
1-
import logging
2-
import pytest
31
import allure
42
from allure_commons.types import AttachmentType
53
from selenium.webdriver.common.by import By
@@ -14,34 +12,28 @@ class SearchTransfersForm:
1412

1513
def __init__(self, driver):
1614
self.driver = driver
17-
self.logger = logging.getLogger(__name__)
1815

1916
@allure.step("Opening phptravels.net website")
2017
def open_page(self):
21-
self.logger.info("Opening phptravels.net website")
2218
self.driver.get("http://www.phptravels.net/")
2319

2420
@allure.step("Opening Transfer tab")
2521
def open_transfer_tab(self):
26-
self.logger.info("Opening Transfer tab")
2722
self.driver.find_element(*SearchTabsLocators.transfer_tab).click()
2823

2924
@allure.step("Setting pick up location: '{1}'")
3025
def set_pick_up_loc(self, pick_up_loc):
31-
self.logger.info(f"Setting pick up location to: {pick_up_loc}")
3226
self.driver.find_element(*SearchTransferLocators.pick_up_loc).click()
3327
self.driver.find_element(By.XPATH, f"//li[contains(text(),'{pick_up_loc}')]").click()
3428

3529
@allure.step("Setting drop off location: '{1}'")
3630
def set_drop_off_loc(self, drop_off_loc):
37-
self.logger.info(f"Setting drop off location to: {drop_off_loc}")
3831
self.driver.find_element(*SearchTransferLocators.drop_off_loc).click()
3932
loc_select = Select(self.driver.find_element(*SearchTransferLocators.drop_off_loc))
4033
loc_select.select_by_visible_text(drop_off_loc)
4134

4235
@allure.step("Setting depart date to '{1}'/'{2}'/'{3}'")
4336
def set_depart_date(self, start_year, start_month, start_day):
44-
self.logger.info(f"Setting depart date to {start_year}/{start_month}/{start_day}")
4537
self.driver.find_element(*SearchTransferLocators.depart_date).click()
4638
current_year = get_datestamp(self.driver, SearchTransferLocators, ["datepicker_nav_title_years"])
4739
if current_year != start_year:
@@ -58,13 +50,11 @@ def set_depart_date(self, start_year, start_month, start_day):
5850

5951
@allure.step("Setting depart time to '{depart_time}'")
6052
def set_depart_time(self, depart_time):
61-
self.logger.info(f"Setting depart time to {depart_time}")
6253
self.driver.find_element(*SearchTransferLocators.depart_time_selector).click()
6354
self.driver.find_element(*SearchTransferLocators.depart_time_imput).send_keys(depart_time, Keys.ENTER)
6455

6556
@allure.step("Setting return date to '{1}'/'{2}'/'{3}'")
6657
def set_return_date(self, end_year, end_month, end_day):
67-
self.logger.info(f"Setting return date to {end_year}/{end_month}/{end_day}")
6858
self.driver.find_element(*SearchTransferLocators.return_date).click()
6959
current_year = get_datestamp(self.driver, SearchTransferLocators, ["datepicker_nav_title_years"])
7060
if current_year != end_year:
@@ -85,12 +75,10 @@ def set_return_date(self, end_year, end_month, end_day):
8575

8676
@allure.step("Setting return time to '{return_time}'")
8777
def set_return_time(self, return_time):
88-
self.logger.info(f"Setting return time to {return_time}")
8978
self.driver.find_element(*SearchTransferLocators.return_time_selector).click()
9079
self.driver.find_element(*SearchTransferLocators.return_time_input).send_keys(return_time, Keys.ENTER)
9180

9281
@allure.step("Performing search")
9382
def search_perform(self):
94-
self.logger.info("Performing search")
9583
self.driver.find_element(*SearchTransferLocators.search_btn).click()
9684
allure.attach(self.driver.get_screenshot_as_png(), name="search_results", attachment_type=AttachmentType.PNG)

tests/conftest.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
import allure
22
import pytest
33
from allure_commons.types import AttachmentType
4-
54
from utils.driver_factory import DriverFactory
65

76

0 commit comments

Comments
 (0)