【发布时间】:2020-03-04 23:06:30
【问题描述】:
我想登录多个网站,所以我尝试实现一个功能代码。下面的程序代码有效。
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
import time
options = Options()
chrome_path = "T:/User/WebScrapingExample/Chromedriver/chromedriver.exe"
driver = webdriver.Chrome(executable_path=chrome_path,chrome_options=options)
driver.set_window_size(1280, 720)
driver.get("https://testwebsite/#/")
time.sleep(5)
user = driver.find_element_by_css_selector("input[type=text]")
password = driver.find_element_by_css_selector("input[type=password]")
user.send_keys("xxx")
password.send_keys("xxx")
driver.find_element_by_css_selector("button[type=submit]").click()
下面的代码不起作用并返回以下错误:
文件 "C:\Users\user\AppData\Local\Continuum\anaconda4\lib\site-packages\selenium\webdriver\remote\webelement.py", 第 478 行,在 send_keys 中 {'text': "".join(keys_to_typing(value)),
文件 "C:\Users\langma\AppData\Local\Continuum\anaconda4\lib\site-packages\selenium\webdriver\common\utils.py", 第 150 行,在 keys_to_typing 中 for i in range(len(val)):
TypeError: 'WebElement' 类型的对象没有 len()
def login(link, username, password, userinput, passwordinput, submitbtn):
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
options = Options()
chrome_path = "T:/user/WebScrapingExample/Chromedriver/chromedriver.exe"
driver = webdriver.Chrome(executable_path=chrome_path,chrome_options=options)
driver.set_window_size(1280, 720)
driver.get(link)
time.sleep(5)
user = driver.find_element_by_css_selector(userinput)
password = driver.find_element_by_css_selector("input[type=password]")
user.send_keys(username)
password.send_keys(password)
driver.find_element_by_css_selector(submitbtn).click()
login(link = "https://testwebsite.com/#/", username = "xxx", password = "xxx", userinput = "input[type=text]", passwordinput = "input[type=password]", submitbtn = "button[type=submit]")
我猜在函数内部导入也是不好的做法,对吧?有人可以帮我让它运行吗?
【问题讨论】:
-
为什么要导入选项?我在您的代码中找不到任何选项设置。也许这是不必要的。我也找不到你在哪里调用 len()。你能粘贴整个错误信息吗?
-
是的,也许我不调用选项,但这应该没关系。更新了帖子:)