Paste
Pasted as Python by olekstomek ( 7 years ago )
import unittest
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions
class WorkshopTests(unittest.TestCase):
"""
Zrefaktoryzuj zadanie 3 i utwórz Page Objects dla:
- formularza wyszukiwania (wpisz miejsce, wybierz przedział dat)
- filtrów przedziału cenowego na stronie wyników
- filtrów ilości gwiazdek na stronie wyników
Korzystając z gotowych komponentów, napisz dwa scenariusze (metody) testowe:
- sprawdzający dostępność obiektów o 3 gwiazdkach w marcu 2018
- sprawdzający że w weekend 15-16. grudnia na Mahattanie nie ma więcej niż 10 dostępnych ofert w najniższym przedziale cenowym
Page objects:
https://selenium-python.readthedocs.io/page-objects.html
"""
def setUp(self):
self.driver = webdriver.Chrome()
def test_exercise(self):
self.driver.get('https://booking.com')
mainPageBooking = MainPageBooking(self)
mainPageBooking.inputValueToSearch()
mainPageBooking.chooseDateInCalendar()
mainPageBooking.clickSearchButton()
resultsPage = ResultsPage(self)
resultsPage.sortResultsOnPage()
resultsPage.chooseCheapestPlace()
def tearDown(self):
self.driver.quit()
class MainPageBooking(WorkshopTests):
def inputValueToSearch(self):
self.driver.find_element_by_id('ss').send_keys('Nowy Jork Manhattan')
def chooseDateInCalendar(self):
self.driver.find_element_by_class_name('sb-date-field__icon').click()
self.driver.find_element_by_css_selector('#frm > div.xp__fieldset.accommodation > div.xp__dates.xp__group > div.xp-calendar > div > div > div.bui-calendar__content > div:nth-child(2) > table > tbody > tr:nth-child(2) > td:nth-child(7)').click()
self.driver.find_element_by_css_selector('#frm > div.xp__fieldset.accommodation > div.xp__dates.xp__group > div.xp-calendar > div > div > div.bui-calendar__content > div:nth-child(2) > table > tbody > tr:nth-child(3) > td:nth-child(5)').click()
def clickSearchButton(self):
self.driver.find_element_by_class_name('sb-searchbox__button').click()
class ResultsPage(WorkshopTests):
def sortResultsOnPage(self):
self.driver.find_element_by_partial_link_text('od najniższej').click() #przy założeniu strony w wersji polskojęzycznej
def chooseCheapestPlace(self):
print(WebDriverWait(self.driver, 9).until(expected_conditions.visibility_of_element_located(
(By.CSS_SELECTOR, '#hotellist_inner > div:nth-child(1) > div.sr_item_content.sr_item_content_slider_wrapper > div.sr_property_block_main_row > div.sr_item_main_block > h3 > a > span.sr-hotel__name'))).text)
if __name__ == "__main__":
unittest.main()
Revise this Paste