2015-06-23 3 views
0

У меня возникла проблема с получением текста из поля имени пользователя в одной из форм на моей веб-странице с использованием Python & Selenium.Python Selenium: Как получить текст, сгенерированный JavaScript в поле ввода

У меня есть поле, которое заполняется с помощью JS после выбора пользователя из списка:

<select id="users" onchange="checkUser(document.getElementById('configpin'))" ondblclick="document.getElementById('users').size=1; showUser(document.getElementById('configpin'))" onmouseout="document.getElementById('users').size=1" size="1"><option value="1">1 User 1</option>[...]</option></select> 

Поле:

<input name="name1" value="" type="text" id="name1" onkeyup="checkNameEntry('name1',20)" onchange="checkNameEntry('name1',20)" onkeydown="if(event.keyCode == 13) submitUser(document.getElementById('configpin'));"> 

И я пытаюсь получить текст, отображаемый в этой области , Но это не работает. я пытался:

uname = driver.find_element_by_id('name1').get_attribute('innerHTML') 

И:

uname = driver.find_element_by_id('name1').text 

, но в обоих случаях все, что я получаю от него пустая строка. Я ожидаю, что это общая проблема, и у нее должно быть какое-то очевидное решение, но я не могу ее найти.

ответ

1

Я проанализировал исходный код веб-страницы немного глубже, и оказалось, что JS на самом деле называется Ajax, и когда я читаю в this thread, вы просто используете .get_attribute ('value') для получения текста. Сначала это показалось мне странным, потому что в html-коде нет атрибута 'value', но он работает.

0

может быть, вы должны найти элемент по имени, например:

uname = driver.find_element_by_name('name1').text 

Проверьте здесь официальный documentation.

+0

Элемент расположен правильно, потому что я использую этот код для очистки этого поля и ввода собственной строки в другом тесте, и он работает. Я думаю, что речь идет о Java Script. В любом случае, я попробовал локатор имен, и результат тот же. – inzbartosz

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