我正在尝试在 Expedia.com 上实现自动化 以下是我正在遵循的步骤 前往 Expedia.com
在日期上我无法找到元素。
下面是我的代码。
import time
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.by import By
driver=webdriver.Chrome()
driver.implicitly_wait(10)
driver.maximize_window()
driver.get("https://www.expedia.com/")
driver.implicitly_wait(10)
//Click on RoundTrip
driver.find_element(By.XPATH,"//span[normalize-space()='Flights']").click()
//Leaving From
leaving_from = driver.find_element(By.XPATH,"//button[@aria-label='Leaving from']")
leaving_from.click()
search_by_city= driver.find_element(By.XPATH,"//input[@id='origin_select']")
search_by_city.click()
time.sleep(10)
search_by_city.send_keys("SFO")
time.sleep(10)
search_by_city.send_keys(Keys.ENTER)
//Going To
going_to = driver.find_element(By.XPATH,"//button[@aria-label='Going to']")
going_to.click()
search_going_to = driver.find_element(By.XPATH,"//input[@id='destination_select']")
search_going_to.click()
time.sleep(10)
search_going_to.send_keys("NYC")
time.sleep(10)
search_going_to.send_keys(Keys.ENTER)
time.sleep(10)
//Dates
dates = driver.find_element(By.CSS_SELECTOR,"#date_form_field-btn")
dates.click()
time.sleep(10)
这是错误 selenium.common.exceptions.NoSuchElementException:消息:没有这样的元素:无法定位元素:{“method”:“css选择器”,“selector”:“#date_form_field-btn”}
请任何人帮助我解决这个错误。
您收到的错误表明 DOM 中不存在具有
id="date_form_field-btn"
的元素,并且如果您手动按照 Selenium 在浏览器中为您模拟的步骤操作,i.e.,如果您转到 https:/ /www.expedia.com/ 并点击“航班”,然后您可以检查页面 (ctrl
+shift
+i
) 或阅读源 html (ctrl
+u
),您发现整个 DOM 中确实没有这样的元素。
然而,有两个候选人适合您:
<button data-stid="uitk-date-selector-input1-default" name="EGDSDateRange-date-selector-trigger" ... >
的按钮代表 dates 字段,幸运的是,attr name
的特定值仅在 DOM 中出现一次。所以你可以通过以下方式找到日期字段:dates = driver.find_element(By.CSS_SELECTOR,'button[name="EGDSDateRange-date-selector-trigger"')
dates.click()
input
元素,分别表示行程的开始和结束日期:<input type="hidden" data-stid="EGDSDateRangePicker-StartDate" ...>
;和<input type="hidden" data-stid="EGDSDateRangePicker-EndDate" ...>
;您可以尝试直接将您想要的值传递给每个人。