selenium Chrome驱动程序找不到ID,也没有更换ID,我做错了什么?

92vpleto  于 2022-11-10  发布在  其他
关注(0)|答案(3)|浏览(171)

我正在尝试构建我的第一个可以自动将我签入西南的python Selify机器人。我有打开西南航空公司签到网站的代码,但它什么都没输入。有人能告诉我我做错了什么吗?

from selenium import webdriver

driver = webdriver.Chrome('/Users/thomas****/chromedriver/chromedriver')

driver.get('https://www.southwest.com/air/check-in/index.html')

conf_num = driver.find_element_by_id("confirmationNumber")
first_name = driver.find_element_by_id("passengerFirstName")
last_name = driver.find_element_by_id("passengerLastName")

conf_num.send_keys("1234")
first_name.send_keys("Thomas")
last_name.send_keys("****")

submit = driver.find_element_by_id('form-mixin--submit-button')
submit.click()
mfuanj7w

mfuanj7w1#

我刚检查过,它起作用了。您唯一的问题是'1234'不是有效的确认号。仔细查看,它会在确认编号字段下显示Enter valid confirmation #.
例如,用下面这样的代码替换它,您将看到一个更大的错误。

conf_num.send_keys("977089")
4uqofj5v

4uqofj5v2#

我使用的是不使用函数find_element_by_id()。尝试使用by。

conf_num = driver.find_element(By.ID, "confirmationNumber")
first_name = driver.find_element(By.ID, "passengerFirstName")
last_name = driver.find_element(By.ID, "passengerLastName")
... 
submit = driver.find_element(By.ID, 'form-mixin--submit-button')

请注意,您必须导入:

from selenium.webdriver.common.by import By
bd1hkmkf

bd1hkmkf3#

看起来你错过了一次延误。您需要等待元素被加载,并准备好接受输入。WebDriverWait用于此目的。此外,所有的find_element_by_*现在都过时了。应该使用新的语法,如下所示:

from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC

options = Options()
options.add_argument("start-maximized")

webdriver_service = Service('/Users/thomas****/chromedriver/chromedriver')
driver = webdriver.Chrome(options=options, service=webdriver_service)
wait = WebDriverWait(driver, 20)

url = "https://www.southwest.com/air/check-in/index.html"

driver.get(url)

wait.until(EC.element_to_be_clickable((By.ID, "confirmationNumber"))).send_keys("1234")
wait.until(EC.element_to_be_clickable((By.ID, "passengerFirstName"))).send_keys("Thomas")
wait.until(EC.element_to_be_clickable((By.ID, "passengerLastName"))).send_keys("****")
wait.until(EC.element_to_be_clickable((By.ID, "form-mixin--submit-button"))).click()

相关问题