【问题标题】:Python Selenium send keys only sending one characterPython Selenium 发送键只发送一个字符
【发布时间】:2021-07-03 17:17:00
【问题描述】:

我正在尝试编写一个程序,该程序将从 Google 航班中收集不同地点和时间的数据。下面的代码能够清除并填写一个字符作为旅行的起点,但我无法让它填写整个字符串:

from selenium import webdriver
import time

def find_flights(origin, destination):
    driver = webdriver.Chrome(executable_path="C:\WebDrivers\chromedriver 89\chromedriver.exe")
    driver.get("https://www.google.com/travel/flights")

    time.sleep(4)
    from_form = driver.find_element_by_xpath('//*[@id="i6"]/div[1]/div/div/div[1]/div/div/input')
    from_form.clear()
    from_form.send_keys(origin)

find_flights("Los Angeles", "New York")

在这种情况下,原点的表单将只包含“L”而不是“Los Angeles”。我认为拆分字符串并在字母之间提供时间间隔可能会解决它,如下所示:

def find_flights(origin, destination):
    driver = webdriver.Chrome(executable_path="C:\WebDrivers\chromedriver 89\chromedriver.exe")
    driver.get("https://www.google.com/travel/flights")

    time.sleep(4)
    from_form = driver.find_element_by_xpath('//*[@id="i6"]/div[1]/div/div/div[1]/div/div/input')
    from_form.clear()
    
    origin_split = list(origin)
    for letter in origin_split:
        driver.find_element_by_xpath('//*[@id="i6"]/div[1]/div/div/div[1]/div/div/input').send_keys(letter)
        time.sleep(0.5)

find_flights("Los Angeles", "New York")

这仍然只填写第一个字母。任何解决方案将不胜感激!

【问题讨论】:

  • 太奇怪了,网站自己关闭了。
  • 浏览器可以吗?
  • 是的,哈哈。把它从功能中拿出来试试。但即使这样也只是发送一个键
  • 它仍然只填写函数外的“L”。
  • 我建议现在使用其他网站。

标签: python selenium selenium-webdriver web-scraping webdriver


【解决方案1】:
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium import webdriver
import time


def find_flights(origin, destination):
    driver = webdriver.Chrome()
    driver.get("https://www.google.com/travel/flights")
    driver.switch_to.frame(0)
    WebDriverWait(driver, 10).until(EC.element_to_be_clickable(
        (By.XPATH, '//*[contains(text(),"I agree")]'))).click()
    driver.switch_to.default_content
    from_form = WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.XPATH, '//*[@id="i6"]/div[1]/div/div/div[1]/div/div/input')))
    time.sleep(3)
    from_form.clear()
    from_form.click()
    from_form.send_keys(origin)


find_flights("Los Angeles", "New York")

input()

在使用发送键之前单击该字段

安装 selenium 4,你可以在清除之前删除那个 time.sleep(3)

  pip install selenium==4.0.0a7

【讨论】:

    猜你喜欢
    • 2018-04-11
    • 2018-04-24
    • 1970-01-01
    • 2021-11-02
    • 2018-06-10
    • 2015-01-22
    • 1970-01-01
    • 1970-01-01
    • 2018-06-11
    相关资源
    最近更新 更多