如果输入类型="数字",Selenium send_keys不起作用

Nag*_*i45 8 python firefox selenium selenium-webdriver

我正在用硒写测试.在那些测试中,我需要在表单中的字段中输入数字.

这是html:

<!DOCTYPE html>
<html>
<head>
</head>
<body>

<form>
    <input type="number" id="field_id">
</form>


</body>
</html>
Run Code Online (Sandbox Code Playgroud)

和代码:

browser = webdriver.Firefox()
browser.get('file:///home/my_username/test.html')
field = browser.find_element_by_id('field_id')
field.send_keys('12')  # NOTHING HAPPEN!
Run Code Online (Sandbox Code Playgroud)

顺便说一句,如果我将字段的类型更改为"文本",例如根本没有问题.另外,field.send_keys(Keys.UP)工作得很好(但是当我使用bootstrap时不起作用)并且一直field.clear()工作,以及field.click().

Selenium版本:2.41.0 Firefox版本:29.0

Yi *_*eng 5

因为您使用的是Firefox 29.请降级到Firefox 28,这是Selenium 2.41.0支持的,请参阅CHANGES文件.否则,您需要等待新的Selenium更新.

以下是我使用Firefox 28测试过的内容:

from selenium import webdriver

DEMO_PAGE = '''
    data:text/html,
    <form><input type="number" id="field_id"></form>
'''

browser = webdriver.Firefox()
browser.get(DEMO_PAGE)

input_number = browser.find_element_by_id('field_id')
input_number.send_keys('12')

input_number_value = input_number.get_attribute('value')
print "input_number_value = " + input_number_value
Run Code Online (Sandbox Code Playgroud)

另请参阅:Selenium找不到类型编号的字段

  • 奇迹般有效.谢谢! (2认同)

sup*_*cuo 5

我在使用Fedora(它不提供像Firefox这样的旧版本的软件包)所以"降级Firefox"有点无法回答.

幸运的是,对一个非常相似的问题的答案暗示了一个更好的解决方案 - 设置"dom.forms.number"Firefox偏好以禁用特殊处理input type="number".在Python中:

profile = webdriver.FirefoxProfile()                                    
profile.set_preference("dom.forms.number", False)                       
browsers = webdriver.Firefox(profile)
Run Code Online (Sandbox Code Playgroud)

使用Firefox 29和Selenium 2.41.0