2013-11-13 3 views
0

Использование Selenium с PhantomJS (python 2.7) Я нахожу текстовое поле на странице (Cisco Unity 7 FYI) и пытаюсь отправить ключи.Selenium Python - send_keys funky behavior

driver.find_element_by_id("pwdPwdPassword").send_keys("12345678") 
driver.save_screenshot('screen.png') 

Глядя на снимок экрана, на самом деле отправляются только 2 клавиши. Не уверены, какие из них Unity маскирует пароль. Я заметил, что если я иду через мой сценарий в IDLE и медленно введите

driver.find_element_by_id("pwdPwdPassword").send_keys("1") 
driver.find_element_by_id("pwdPwdPassword").send_keys("2") 
driver.find_element_by_id("pwdPwdPassword").send_keys("3") 
driver.find_element_by_id("pwdPwdPassword").send_keys("4") 
.... 

Нажатие клавиши на самом деле сделать это в текстовом поле. Я попытался поместить time.sleep (2) между каждыми send_keys в моем скрипте, но результаты одинаковы. Я надеюсь, что есть трюк, поэтому мне не нужно добавлять 30 секунд к моему сценарию, чтобы ввести этот пароль!

Спасибо !!!

+0

Какую версию WebDriver вы используете? Какой браузер вы используете? Существует ли такое же поведение для разных страниц или браузеров? Если этот случай зависит только от приложения, мое единственное предложение - сделать свой собственный «сложный» метод отправки ключей. Например, 'def send_keys (element, keys_to_send): для ключа в keys_to_send: element.send_keys (key)' (Конечно, элемент должен быть определен первым) –

+0

Извините! WebDriver 2.37.2, PhantomJS 1.9.2. Я проверил это с Chrome, и он работает, поэтому я думаю, что это проблема PhantomJS. Мне нужен безголовый браузер, знаете ли вы, возможно ли это с Chrome? Спасибо –

+0

На Ubuntu я использую pyvirtualdisplay lib. На самом деле это Chromedriver на виртуальном дисплее в моем случае –

ответ

1

Как вариант, попробуйте использовать JQuery:

def enter_password(driver, password): 
    driver.execute_script("""$("#pwdPwdPassword").val('%s');"""" % password) 
    ## id must be unique per page 
+0

Я дал вам верх, но я не могу принять ответ, поскольку он не работает для меня. Чтобы решить мою проблему, я закончил делать магию табуляции. Я нашел элемент перед текстовым полем, давая мне проблему, и отправил этот элемент в Keys.TAB. В основном пытается найти элемент перед ним и накладывать на него как на irl-клавиатуре. Затем работала send_keys. Почему я должен был на нее наброситься, не знаю, но он работает, поэтому я счастлив :) –

+0

В этом случае вы также можете попробовать щелкнуть по нему перед отправкой ключей. –

Смежные вопросы