Ключи отправки Selenium не работают, если тип ввода= " номер"

Я пишу тесты с использованием Selenium. В этих тестах мне нужно ввести номер в поле в форме.

вот html:

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

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


</body>
</html>

и код:

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!

кстати, если я изменю тип поля на "текст", например, нет никаких проблем. Кроме того, field.send_keys(Keys.UP) отлично работает (но не работает, когда я использую bootstrap) и field.clear() работа все время, а также field.click().

версия Селена: 2.41.0 Версия Firefox : 29.0

6 ответов


потому что вы используете Firefox 29. Пожалуйста, перейдите на Firefox 28, который поддерживает Selenium 2.41.0, см. изменения. В противном случае вам нужно дождаться новых обновлений 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

Читайте также: Selenium не может найти поля с номером типа


Я на Fedora (который не предоставляет старые версии пакетов, таких как Firefox), поэтому "понижение Firefox"-это немного не ответ.

к счастью, ответ на очень похожий вопрос намеки на лучшее решение-установка " dom.формы.номер " Firefox предпочтения отключить специальный режим input type="number". В Python:

profile = webdriver.FirefoxProfile()                                    
profile.set_preference("dom.forms.number", False)                       
browsers = webdriver.Firefox(profile)

работа с Firefox 29 и Selenium 2.41.0


я столкнулся с этой проблемой сегодня утром. После обновления Selenium он теперь работает правильно.

Итак, если Вы читаете это, запустите

pip install -U selenium

и снова попробовать. Я перешел с Selenium версии 2.41.0 на 2.42.1, и теперь он работает правильно с Firefox 30.0.


вероятно, вы можете использовать Javascript для решения этой проблемы. Следующий код находится в Java, но это, вероятно, можно сделать аналогично в Python:

((IJavaScriptExecutor)webdriver)
     .ExecuteScript("document.getElementById('field_id').value='12';");

У меня была такая же проблема, и использование Javascript решило ее.


в моем случае selenium Send_keys отлично работает таким образом.

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

browser = webdriver.Firefox()

browser.get('http://www.yahoo.com')
assert 'Yahoo' in browser.title

elem = browser.find_element_by_name('p')  # Find the search box
elem.send_keys('seleniumhq' + Keys.RETURN)

browser.quit()enter code here`

это веб https://pypi.python.org/pypi/selenium


Я решил эту проблему таким образом:

locator =  <element xpath>
field = browser.find_element_by_xpath(to_unicode(**locator**,"utf-8")) 
if(field != None):
     field.send_keys(Keys.CONTROL + 'a')
     field.send_keys(value)