使用Python和Firefox的Selenium WebDriver的sendkeys()

13 投票
3 回答
98510 浏览
提问于 2025-04-17 13:56

我正在使用 selenium 2.25.0firefox 3python 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')

撰写回答