Psst.. new poll here.
Psst.. new forums here.
Microsoft is blocking us again (TY IP Reputation!) so dont bother with any of their useless mail servers here and just use oauth login instead. Thank the nice Russians for causing that. :)
Paste
Pasted as Python by olekstomek ( 8 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