我一直在尝试用日期填充两个输入框(其余的已经填充),然后单击Search Flights
按钮以填充结果,但无法完成。我已注释掉脚本中未成功的尝试。
我希望输入框填充以下日期19 Jan, 19
和7 Feb, 19
。
到目前为止我的尝试:
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 as EC
from selenium.webdriver.common.keys import Keys
def fill_in_search_boxes(driver,url):
driver.get(url)
wait.until(EC.presence_of_element_located((By.CSS_SELECTOR, ".airportselector_input[placeholder='From']"))).send_keys("Tatry - Poprad")
wait.until(EC.presence_of_element_located((By.CSS_SELECTOR, ".airportselector_input[placeholder='To']"))).send_keys("London")
# wait.until(EC.presence_of_element_located((By.CSS_SELECTOR, ".od-ui-datepicker-display"))).send_keys("Sat. 19 Jan, '19")
# wait.until(EC.presence_of_element_located((By.CSS_SELECTOR, ".od-ui-datepicker-display"))).send_keys("Thu. 7 Feb, '19")
wait.until(EC.presence_of_element_located((By.CSS_SELECTOR, ".od-flightsManager-search-flight-button"))).click()
if __name__ == '__main__':
url = "https://www.edreams.com/"
driver = webdriver.Chrome()
wait = WebDriverWait(driver,10)
try:
fill_in_search_boxes(driver,url)
finally:
driver.quit()
答案 0 :(得分:1)
您正在尝试将密钥发送到div
,而不是input
字段。您需要单击每个div
并选择所需的日期。
尝试以下操作以获得所需的输出。
def fill_in_search_boxes(driver,url):
driver.get(url)
# Select first airport
wait.until(EC.visibility_of_element_located((By.CSS_SELECTOR, ".airportselector_input[placeholder='From']"))).send_keys("Tatry - Poprad")
wait.until(EC.element_to_be_clickable((By.XPATH, "//span[.='Tatry - Poprad']"))).click()
# Select second airport
wait.until(EC.visibility_of_element_located((By.CSS_SELECTOR, ".airportselector_input[placeholder='To']"))).send_keys("London")
wait.until(EC.element_to_be_clickable((By.XPATH, "//span[.='London']"))).click()
# Select From date
wait.until(EC.presence_of_element_located((By.XPATH, "//div[.='Departure']"))).click()
wait.until(EC.element_to_be_clickable((By.CLASS_NAME, 'day_2019-01-19'))).click()
# Select To date
wait.until(EC.presence_of_element_located((By.XPATH, "//div[.='Return']"))).click()
wait.until(EC.element_to_be_clickable((By.CLASS_NAME, 'day_2019-02-07'))).click()
# Submit form
wait.until(EC.presence_of_element_located((By.CSS_SELECTOR, ".od-flightsManager-search-flight-button"))).click()
请注意,这允许处理当前/下个月的日期。您可能需要创建一个函数来处理所有月份的日期。
P.S。由于验证码原因,我无法检查此代码,因此请告知是否有问题
答案 1 :(得分:0)
如果您仔细检查,我们将无法在日期字段中写入任何内容。它们不是文本字段,我们必须在此处选择输入。 您可以尝试以下操作:
undefined