WebElement 类型的 Selenium 对象没有 len()

Selenium Object of Type WebElement has no len()

我正在尝试从 Selenium 登录 Facebook Marketplace。电子邮件地址正在按预期填充。密码字段未被识别。

错误:

File "C:\Users\jsmith\fb.py", line 18, in password.send_keys(password) TypeError: object of type 'WebElement' has no len()

我的代码:

from selenium import webdriver
from webdriver_manager.chrome import ChromeDriverManager
from selenium.webdriver.common.keys import Keys
import time

username = 'myemail'
password = 'mypassword'
#OpenBrowser
driver = webdriver.Chrome(ChromeDriverManager().install())
driver.get("https://facebook.com/")

#Logging
email = driver.find_element_by_id('email')
password = driver.find_element_by_xpath('//*[@id="pass"]')
#facebook username input
email.send_keys(username)
#facebook password input
password.send_keys(password)

除了上面的 xpath 之外,我还尝试使用 find_element_by_name()find_element_by_id()(以及两者的复数形式)。

您有 2 个名为 password 的变量,因此当您尝试将密码字符串发送给输入时,它不会起作用

在您的代码块中,变量 password 最初指的是 mypassword 的字符串值。向前推进,password 被重新初始化为 WebElement。因此,当您在 send_keys(password) 中传递变量 password 时,它指的是 WebElement。因此您会看到错误:

password.send_keys(password) TypeError: object of type 'WebElement' has no len()

解决方案

密码字段的变量名由password改为pass如下:

password = 'mypassword'
# other lines of code
pass = driver.find_element_by_xpath('//*[@id="pass"]')
#facebook password input
pass.send_keys(password)