Roo*_*kie 1 javascript python selenium
我在向Google登录框中的用户名和密码字段发送密钥时遇到问题.Selenium找到id为"Email"和"Passwd"的webelements,但是我无法向他们发送任何密钥.
这是没有产生预期结果的代码:
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)
Run Code Online (Sandbox Code Playgroud)
此代码生成错误:
回溯(最近一次调用最后一次):文件"SERPkopi.py",第18行,在username.send_keys(用户名)文件"/Users/Sverdrup/virtualenv-1.6.1/Alert/lib/python2.7/site- packages/selenium/webdriver/remote/webelement.py",第142行,在send_keys中local_file = LocalFileDetector.is_local_file(*value)文件"/xxxxx/xxxxxx/virtualenv-1.6.1/Alert/lib/python2.7/site- packages/selenium/webdriver/remote/webelement.py",第253行,在is_local_file中,i在范围内(len(val)):TypeError:'WebElement'类型的对象没有len()
这很奇怪,因为相同的代码可以写入谷歌的'q'(查询)字段
我试图通过id,name,xpath识别webElement无济于事.
背景为什么:
今天我睁大眼睛看谷歌警报,并希望对我公司的客户名称设置警报(这是一个企业对企业的设置,因此客户就是公司本身).客户相对较小,我不认为我会在他们的名字上收到很多警报,但能够跟踪它们会很棒.
看到没有用于谷歌警报的API,我想我会使用selenium以编程方式输入几百个客户名称.我首先必须能够登录我的帐户,但...
我真的很感激所有和任何帮助.
诚挚
所以这可能是一个苦乐参半的答案,但你的脚本基本上是好的.这是问题所在:
username = "test"
#....
username = driver.find_element_by_id('Email')
username.send_keys(username)
Run Code Online (Sandbox Code Playgroud)
你设置用户名就好了,但是你继续将它重新定义为Email元素,然后由于最后一行而导致错误 - 你将username元素作为字符串(它的参数send_keys)发送回自身,导致混乱的初始事件.的len错误是因为硒试图采取的参数的长度send_keys,并预期是一个字符串,但在这种情况下的元素.要修复它,只需更改其中一个变量名称即可.例如
user_field = driver.find_element_by_id('Email')
user_field.send_keys(username)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2439 次 |
| 最近记录: |