无法使用 Selenium 和 Python 将文本发送到 expedia.com 内的离开字段
Unable to send text to Leaving from field within expedia.com using Selenium and Python
在网站 https://www.expedia.com/ 上,我需要在离开列中输入,但它只给我一个 error:AttributeError:'NoneType' 对象没有属性 'send_keys'。我怎样才能写离开?
import time
from selenium import webdriver
driver=webdriver.Chrome(executable_path="D:\ChromeDriverExtracted\chromedriver")
driver.implicitly_wait(5)
driver.maximize_window()
driver.get("https://www.expedia.com/")
driver.find_element_by_xpath("//span[text()='Flights']").click()
time.sleep(2)
driver.find_element_by_xpath("//*[@id=wizard-flight-tab-roundtrip]/div[2]/div[1]/div/div[1]/div/div/div/button").send_keys("SFO")
您的最后一个“find_element_by_xpath”似乎没有正确定位您要查找的元素。确实找到您的元素的 xpath 是
"//input[@id='location-field-leg1-origin-input']"
不过我认为这不会完全解决您的问题。一件事是你需要点击这个元素而不是简单地向它发送键。您需要打开您实际进入的模式和select您离开的机场。
发送一个字符序列到你需要归纳的元素WebDriverWait for the and you can use either of the following :
使用CSS_SELECTOR:
driver.get("https://www.expedia.com/")
WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "a[aria-controls='wizard-flight-pwa']>span"))).click()
WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "button[aria-label='Leaving from']"))).click()
WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "input#location-field-leg1-origin"))).send_keys("SFO")
使用 XPATH:
driver.get("https://www.expedia.com/")
WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//a[@aria-controls='wizard-flight-pwa']//span"))).click()
WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//button[@aria-label='Leaving from']"))).click()
WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//input[@id='location-field-leg1-origin']"))).send_keys("SFO")
浏览器快照:
注意:您必须添加以下导入:
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
在网站 https://www.expedia.com/ 上,我需要在离开列中输入,但它只给我一个 error:AttributeError:'NoneType' 对象没有属性 'send_keys'。我怎样才能写离开?
import time
from selenium import webdriver
driver=webdriver.Chrome(executable_path="D:\ChromeDriverExtracted\chromedriver")
driver.implicitly_wait(5)
driver.maximize_window()
driver.get("https://www.expedia.com/")
driver.find_element_by_xpath("//span[text()='Flights']").click()
time.sleep(2)
driver.find_element_by_xpath("//*[@id=wizard-flight-tab-roundtrip]/div[2]/div[1]/div/div[1]/div/div/div/button").send_keys("SFO")
您的最后一个“find_element_by_xpath”似乎没有正确定位您要查找的元素。确实找到您的元素的 xpath 是
"//input[@id='location-field-leg1-origin-input']"
不过我认为这不会完全解决您的问题。一件事是你需要点击这个元素而不是简单地向它发送键。您需要打开您实际进入的模式和select您离开的机场。
发送一个字符序列到你需要归纳的元素WebDriverWait for the
使用CSS_SELECTOR:
driver.get("https://www.expedia.com/") WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "a[aria-controls='wizard-flight-pwa']>span"))).click() WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "button[aria-label='Leaving from']"))).click() WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "input#location-field-leg1-origin"))).send_keys("SFO")
使用 XPATH:
driver.get("https://www.expedia.com/") WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//a[@aria-controls='wizard-flight-pwa']//span"))).click() WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//button[@aria-label='Leaving from']"))).click() WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//input[@id='location-field-leg1-origin']"))).send_keys("SFO")
浏览器快照:
注意:您必须添加以下导入:
from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.common.by import By from selenium.webdriver.support import expected_conditions as EC