Welcome, guest! Login / Register - Why register?
Psst.. new poll here.
Psst.. new forums here.

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

Your Name: Code Language: