Как отправлять разные даты в полях Check-in и Check-out в пределах https://www.expedia.co.in/, используя Selenium через Python - PullRequest
2 голосов
/ 07 июня 2019

Я пишу простой код, чтобы выбрать место прибытия, место отправления, дату прибытия и дату отъезда в Expedia.

Все работает отлично, ожидайте, что дата приезда и отъезда будут совпадать .

from selenium import webdriver
from selenium.webdriver.common.by import By
import time

driver = webdriver.Firefox(executable_path="C:/bin/geckodriver.exe")
driver.implicitly_wait(20)
driver.maximize_window()
driver.get("https://www.expedia.co.in/")
driver.find_element(By.ID, "tab-flight-tab-hp").click()
driver.find_element(By.ID, "flight-origin-hp-flight").send_keys("SFO")
time.sleep(2) 
driver.find_element(By.ID, "flight-destination-hp-flight").send_keys("NYC")
driver.find_element(By.ID, "flight-departing-hp-flight").send_keys("07/06/2019")
time.sleep(2)
driver.find_element(By.ID, "flight-returning-hp-flight").clear()
driver.find_element(By.XPATH, "//input[@id='flight-returning-hp-flight']").send_keys("10/06/2019")
driver.find_element(By.XPATH,"//form[@id='gcw-flights-form-hp-flight']//button[@class='btn-primary btn-action gcw-submit']").click()

Снимок экрана вывода:

output screenshot

Ответы [ 2 ]

1 голос
/ 07 июня 2019

Нужно немного изменить пользовательский скрипт.

Нажмите на дату возврата после ввода даты начала.Затем нажмите пробел, чтобы удалить дату по умолчанию.Ниже приведена логика.

driver.find_element(By.ID, "flight-departing-hp-flight").send_keys("07/06/2019")
ele = driver.find_element(By.ID, "flight-returning-hp-flight")
#click on return date field
ele.click()
# remove the default date(same as selected start date) by hitting backspace
length = len(ele.get_attribute('value'))
ele.send_keys(length * Keys.BACKSPACE)
#enter the return date
driver.find_element(By.XPATH, "//input[@id='flight-returning-hp-flight']").send_keys("10/06/2019")
0 голосов
/ 07 июня 2019

Согласно вашему сценарию использования, вы устанавливаете значение в элементе, связанном с текстом Регистрация , то же самое автоматически заполняется в элементе, связанном с текстом Проверка .Чтобы установить другую дату в элементе, связанном с текстом Извлечение , вы можете использовать следующее решение:

  • Блок кода:

    driver.get("https://www.expedia.co.in/")
    WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "button#tab-flight-tab-hp"))).click()
    WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//label[@for='flight-departing-hp-flight']//span[@class='label' and text()='Departing']//following::input[1]"))).send_keys("08/06/2019")
    returning = WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//label[@for='flight-returning-hp-flight']//span[@class='label' and text()='Returning']//following::input[1]")))
    driver.execute_script("arguments[0].setAttribute('value','09/06/2019')", returning)
    
  • Снимок браузера:

expedia

...