2016-04-18 7 views
0

В Firebug и других DevTools вы можете получить свойства и значения DOM, соответствующие элементу HTML.Извлечение значения свойства DOM с использованием Selenium

Как можно извлечь такие значения с использованием кода selenium-java? я пытался getAttribute(), но это, кажется, работает только для HTML-атрибутов, а не для DOM свойств, таких как «значение» или «проверка орфографии» и т.д.

Поэтому я пошел для этого подхода является то, что значение, связанное с <input> текстовое поле (фрагмент ниже) генерируется во время выполнения, а данные привязаны к нему с помощью Knockout. И, следовательно, это не возможно, чтобы захватить их с помощью стандартных подходов, как getText(), getAttribute("value"), getAttribute("text"), getAttribute("innerHTML"), getAttribute("innertext") и т.д.

HTML фрагмент кода для HTML элемента:

<input class="form-control" type="text" style="cursor: text" readonly="readonly" data-bind="textInput: url"> 

Firebug's DOM panel displaying DOM properties of an <input> element

ответ

0

Согласно Selenium documentation, существует только функция getAttribute(), которая описана следующим образом:

Получите значение данного атрибута элемента. Будет возвращено текущее значение, даже если оно было изменено после загрузки страницы. Точнее, этот метод вернет значение данного атрибута, если только этот атрибут отсутствует, и в этом случае возвращается значение свойства с тем же именем (например, для свойства value для элемента textarea). Если ни одно значение не задано, возвращается значение null. ...

В соответствии с этим, getAttribute("value") должен возвращать значение свойства DOM в случае нет никакого атрибута HTML имени value.

Если это не так, это может быть проблема с синхронизацией. То есть значение считывается Selenium до того, как оно будет установлено.

+0

пытался в режиме отладки в eclipse, так что я могу быть уверен, что это не проблема синхронизации страниц. Я ждал загрузки страницы. getAttribute ("value") возвращает значение null, тогда как при проверке с помощью firebug я могу правильно видеть значение. Нужно ли с этим делать привязку данных для нокаута js? – Andy

+0

Я так не думаю, так как свойство 'value' явно устанавливается правильно в соответствии с вашим снимком экрана. Итак, Селен должен уметь читать его. Хотя я и не использовал Knockout.js, но это точно. –

0

Я знаю, что это старый вопрос, но это может дать кому-то еще в Раздайте

Используйте это в консоли

$$("input.form-control").value 

если он возвращает необходимый вам придется выполнить команду Javascript с помощью WebDriver т.е.

driver.ExecuteScript("var data = arguments[0].value; return data;", (Element as RemoteWebElement) 
+0

Отформатируйте свой ответ. –

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