Welcome, guest! Login / Register - Why register?
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

Your Name: Code Language: