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)
我正在尝试从 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)