使用Python和Firefox的Selenium WebDriver的sendkeys()
我正在使用 selenium 2.25.0
、firefox 3
和 python 2.6.6
。我想运行一个使用 sendkeys()
的 selenium 函数:
Webdriver.find_element_by_name( 'j_username' ).clear()
webdriver.find_element_by_name( 'j_username' ).send_keys( "username" )
这段代码在我的电脑上运行得很好。但是在另一台电脑上,用户名输入框却是空的,脚本继续执行(没有报错)。
我注意到在尝试输入用户名之前,输入框会被清空,所以我知道找到按钮或按钮名称没有问题。我试着在清空输入框和发送用户名之间加一些暂停,但这似乎也没用。
我需要保持我的 Firefox 和 Selenium 版本一致,还有什么其他的地方可以检查来解决这个问题吗?
3 个回答
2
我的问题和这个一模一样,我是通过把selenium的版本从2.42.1降到2.25.0来解决的。
在我更改了selenium的版本后,测试可以使用send_keys()方法输入内容,并通过send_keys(Key.ENTER)来提交表单。
我现在是在一台没有窗口的远程Debian Squeeze 6.0.8服务器上运行,使用的是Iceweasel 3.5.16。
Mozilla Iceweasel 3.5.16, Copyright (c) 1998 - 2010 mozilla.org
Distributor ID: Debian
Description: Debian GNU/Linux 6.0.8 (squeeze)
Release: 6.0.8
Codename: squeeze
2
可以试试下面这个方法,我觉得可能有效。
driver = webdriver.Firefox()
elem = driver.find_element_by_name('j_username')
elem.clear()
app = Application.Application()
app.window_(title_re='*.Firefox.*').TypeKeys('username')
最后两行是用Python写的(使用了pyWinauto这个库)
8
你的代码看起来有点奇怪。一般来说,你会先找到一个元素,然后对它进行操作,而不是每次都重新找到它。
试试这样做:
from selenium import webdriver
driver = webdriver.Firefox()
elem = driver.find_element_by_name('j_username')
elem.clear()
elem.send_keys('username')