从中的日期选取器中选择日期雅特拉网站

2024-06-16 10:52:57 发布

您现在位置:Python中文网/ 问答频道 /正文

嗨,我是python和Selenium的新手。 我是出于兴趣才学的。我的问题是 我想在下面的网站选择出发日期和到达日期。 https://www.yatra.com/ 我需要使用selenium的python代码,有人能帮我吗。 如果需要,您可以使用任何其他库。你知道吗

谢谢你的帮助。你知道吗


Tags: 代码httpscom网站wwwselenium兴趣新手
1条回答
网友
1楼 · 发布于 2024-06-16 10:52:57
  1. 提出一个相关的locator strategy来识别日期选择器和日期。使用关联的find_element函数实现
  2. 单击“原点”日期选择器
  3. 使用Explicit Wait等待“可用日期”列表出现(您需要这样做,因为在日期列表中单击日期选择器不会触发页面重新加载,如果您要立即尝试在所需日期单击-日期还不存在,请查看How to use Selenium to test web applications using AJAX technology了解更多详细信息)
  4. 选择所需日期(或选择random日期)
  5. 单击所需日期
  6. 再次使用显式等待日期列表消失
  7. 对“destination”日期选择器重复步骤2-6

示例代码:

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
import random

driver = webdriver.Chrome("c:\\path\\to\\chromedriver.exe")  
driver.maximize_window()
driver.get('https://www.yatra.com')

wait = WebDriverWait(driver, 10)

departure = wait.until(
    expected_conditions.presence_of_element_located((By.XPATH, "//input[@name='flight_origin_date']"))).click()

wait.until(expected_conditions.visibility_of_any_elements_located((By.XPATH,"//td[@data-date]")))
dates = driver.find_elements_by_xpath("//td[@data-date]")
driver.execute_script("arguments[0].click()",random.choice(dates))
wait.until(expected_conditions.invisibility_of_element_located((By.XPATH,"//td[@data-date]")))
destination = wait.until(
    expected_conditions.presence_of_element_located((By.XPATH, "//input[@name='flight_destination_date']"))).click()

wait.until(expected_conditions.visibility_of_any_elements_located((By.XPATH,"//td[@data-date]")))
dates = driver.find_elements_by_xpath("//td[@data-date]")
random.choice(dates).click()
wait.until(expected_conditions.invisibility_of_element_located((By.XPATH,"//td[@data-date]")))

driver.quit()

上面的代码假定为Chrome浏览器和ChromeDriver,但是您可以选择使用不同的浏览器。你知道吗

相关问题 更多 >