javascript - 让 Selenium 将 key 发送到谷歌的登录框(用 python 编码)

标签 javascript python selenium

我在向 google 登录框中的用户名和密码字段发送 key 时遇到问题。 Selenium 找到了 ID 为“Email”和“Passwd”的网络元素,但我无法向它们发送任何 key 。

这是未产生预期结果的代码:

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

username = "test"
password = "ninja"


driver = webdriver.Firefox()
driver.get(u'http://www.google.com')

driver.implicitly_wait(10)

elem = driver.find_element_by_id("gb_70")
elem.click()

username = driver.find_element_by_id('Email')
username.send_keys(username)

这段代码会产生一个错误:

Traceback (most recent call last): File "SERPkopi.py", line 18, in username.send_keys(username) File "/Users/Sverdrup/virtualenv-1.6.1/Alert/lib/python2.7/site- packages/selenium/webdriver/remote/webelement.py", line 142, in send_keys local_file = LocalFileDetector.is_local_file(*value) File "/xxxxx/xxxxxx/virtualenv-1.6.1/Alert/lib/python2.7/site- packages/selenium/webdriver/remote/webelement.py", line 253, in is_local_file for i in range(len(val)): TypeError: object of type 'WebElement' has no len()

这很奇怪,因为相同的代码可以写入 google 的“q”(查询)字段

我尝试通过 id、名称、xpath 来识别 webElement,但都无济于事。

原因背景:

今天我开始关注 google 快讯,并想在我公司的客户名称上设置快讯(这是企业对企业的设置,因此客户本身就是公司)。客户相对较少,我不认为我会收到很多关于他们名字的提醒,但如果能够跟踪他们就太好了。

鉴于没有用于 google 提醒的 API,我想我应该使用 selenium 以编程方式输入几百个客户的姓名。不过,我首先必须能够登录到我的帐户...

我真的很感激所有的帮助。

真诚的

最佳答案

所以这可能是一个苦乐参半的答案,但您的脚本基本上没问题。这是问题所在:

username = "test"

#....

username = driver.find_element_by_id('Email')
username.send_keys(username)

您将用户名设置得很好,但您随后继续将其重新定义为 Email 元素,然后由于最后一行而导致错误 - 您正在发送 username 元素作为字符串返回到自身(这是 send_keys 的参数),导致类似 Inception 的困惑事件。 len 错误是因为 Selenium 试图获取 send_keys 参数的长度,它期望是一个字符串,但在本例中是一个元素。为了修复它,只需更改其中一个变量名称即可。例如

user_field = driver.find_element_by_id('Email')
user_field.send_keys(username)

关于javascript - 让 Selenium 将 key 发送到谷歌的登录框(用 python 编码),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13163074/

相关文章:

javascript - 我可以让触摸事件通过一个层吗?

javascript - 匹配除 JavaScript 中特定模式之外的所有内容

java - PageFactory初始化问题

java - 如何让 Firefox 在 Mac OSX 上与 Selenium WebDriver 一起工作

javascript - 防止用户在文本字段中键入和粘贴,只允许从 USB 条码阅读器读取

javascript - 寻找 "day view"javascript 库/插件/日历

python - 查找各个列的最大/最小值

python - 如何设置Google机器学习任务的输出目录?

python - 无法使用 pyenv ipython 笔记本导入 matplotlib

java - 如何使用 python(加上 java)在 selenium 中处理 Windows 身份验证弹出窗口