Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import time
- import pytest
- from selenium import webdriver
- from selenium.webdriver.common.by import By
- from selenium.webdriver.remote.webdriver import WebDriver
- @pytest.fixture
- def driver():
- driver = webdriver.Chrome()
- driver.maximize_window()
- driver.get('https://www.traveloka.com')
- yield driver
- driver.quit()
- def test_rental_car(driver):
- # Select cars product
- driver.find_element(
- By.XPATH,
- '//*[@id="__next"]/div[4]/div[2]/div[1]/div[2]/div/div[1]/div/div/div[6]'
- ).click()
- # select tab without driver
- driver.implicitly_wait(10)
- without_driver = driver.find_element(
- By.XPATH,
- '//*[@id="__next"]/div[4]/div[2]/div[1]/div[2]/div/div[3]/div/div/div/div/div[1]/div/div[1]/div'
- )
- if without_driver.get_attribute('style') != 'background-color: rgb(1, 148, 243);':
- without_driver.click()
- # select pickup location (Jakarta)
- location_input = driver.find_element(
- By.XPATH,
- '//*[@id="__next"]/div[4]/div[2]/div[1]/div[2]/div/div[3]/div/div/div/div/div[2]/div/div[1]/div/div[1]/div[1]/div[1]/input'
- )
- location_input.click()
- location_input.send_keys('Jakarta')
- # select first result
- time.sleep(1)
- driver.implicitly_wait(10)
- driver.find_element(
- By.CSS_SELECTOR,
- 'div.css-1dbjc4n.r-14lw9ot.r-1q52ik8.r-qklmqi.r-1loqt21.r-18u37iz.r-1wtj0ep.r-ymttw5.r-5njf8e.r-1otgn73.r-1i6wzkk.r-lrvibr.r-13qz1uu'
- ).click()
- # select pickup date
- driver.find_element(
- By.XPATH,
- '//*[@id="__next"]/div[4]/div[2]/div[1]/div[2]/div/div[3]/div/div/div/div/div[2]/div/div[3]/div/div[1]/div[1]'
- ).click()
- driver.implicitly_wait(10)
- select_date(driver, 3) # select today + 3 day
- # select pickup time
- time.sleep(1)
- driver.find_element(
- By.XPATH,
- '//*[@id="__next"]/div[4]/div[2]/div[1]/div[2]/div/div[3]/div/div/div/div/div[2]/div/div[5]/div/div[1]/div[1]'
- ).click()
- driver.implicitly_wait(10)
- select_time(driver, 10, 30) # select time 10.30
- # select drop-off date
- time.sleep(1)
- driver.find_element(
- By.XPATH,
- '//*[@id="__next"]/div[4]/div[2]/div[1]/div[2]/div/div[3]/div/div/div/div/div[2]/div/div[7]/div/div[1]/div[1]'
- ).click()
- driver.implicitly_wait(10)
- select_date(driver, 4) # select today + 5 day
- # select drop-off time
- time.sleep(1)
- driver.find_element(
- By.XPATH,
- '//*[@id="__next"]/div[4]/div[2]/div[1]/div[2]/div/div[3]/div/div/div/div/div[2]/div/div[5]/div/div[1]/div[1]'
- ).click()
- driver.implicitly_wait(10)
- select_time(driver, 10, 30) # select time 10.30
- # search button
- driver.find_element(
- By.XPATH,
- '//*[@id="__next"]/div[4]/div[2]/div[1]/div[2]/div/div[3]/div/div/div/div/div[2]/div/div[11]/div/div/div'
- ).click()
- def select_date(driver: WebDriver, element_index):
- date_element = driver.find_element(By.CSS_SELECTOR,
- 'div.css-1dbjc4n.r-14lw9ot.r-1wh2hl7.r-e65k4z.r-b4qz5r.r-1d2f490.r-1udh08x.r-u8s1d')
- available_dates = date_element.find_elements(
- By.CSS_SELECTOR,
- # 'div.css-1dbjc4n.r-1awozwy.r-kdyh1x.r-1loqt21.r-1777fci.r-1otgn73.r-1i6wzkk.r-lrvibr'
- 'div.css-1dbjc4n.r-13qz1uu'
- )
- available_dates[element_index].click()
- def select_time(driver: WebDriver, hour_index, minute_index):
- # time_wrapper_element = driver.find_element(
- # By.CSS_SELECTOR,
- # 'div.css-1dbjc4n.r-14lw9ot.r-1wh2hl7.r-e65k4z.r-b4qz5r.r-1dqxon3.r-u8s1d.r-zchlnj.r-y46g1k'
- # )
- time_wrapper_element = driver.find_element(
- By.XPATH,
- '//*[@id="__next"]/div[4]/div[2]/div[1]/div[2]/div/div[3]/div/div/div/div/div[2]/div/div[5]/div/div[2]/div'
- )
- time_wrapper_element.find_element(
- By.XPATH,
- f"//div[contains(text(),'Hour')]/following-sibling::div//div[@tabindex='0'][text()='{hour_index}']"
- ).click()
- time_wrapper_element.find_element(
- By.XPATH,
- f"//div[contains(text(),'Minute')]/following-sibling::div//div[@tabindex='0'][text()='{minute_index}']"
- ).click()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement