首页 > 解决方案 > 如何使 Selenium 中的发送密钥起作用?

问题描述

from selenium import webdriver
from selenium.webdriver.common.keys import Keys
import time

PATH = 'C:\Program Files (x86)\chromedriver.exe'
driver = webdriver.Chrome(PATH)

driver.get('https://outlook.office.com/mail/')

driver.implicitly_wait(7)
login = driver.find_element_by_name("loginfmt")
login.send_keys("emailhere")
login.send_keys(Keys.RETURN)

driver.implicitly_wait(5)

password = driver.find_element_by_name("passwd")
password.send_keys("passwordhere")
password.send_keys(Keys.RETURN)

它完美地输入了电子邮件并将我带到了密码输入屏幕,但此时它并没有发送密码密钥。关于我的代码有什么问题的任何想法?

标签: pythonseleniumselenium-webdriver

解决方案


这里需要显式等待。参考等待,所以代码会像

from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

password = WebDriverWait(driver, 20).until(
        EC.element_to_be_clickable((By.NAME, "passwd"))
    )

password.send_keys("passwordhere")

附加参考:文档


推荐阅读