В HTML-коде веб-приложения есть следующий код
<input type="text" name="prettyTime" id="prettyTime" class="ui-state-disabled prettyTime" readonly="readonly">
Фактически на странице отображается строка, отображающая время.
В Selenium Web Driver у меня есть WebElement
объект, относящийся к <input>
использованию
WebElement timeStamp = waitForElement(By.id("prettyTime"));
Я хочу получить значение WebElement
или, другими словами, то, что напечатано на странице. Я перепробовал все WebElement
геттеры, и ничего не получало фактического значения, которое видит пользователь. Любая помощь? Спасибо.
java
selenium
selenium-webdriver
jamesfzhang
источник
источник
getAttribute("value")
это на самом деле , как вы это делаете ?! В этом нет никакого смысла. Есть большая разница междуvalue
атрибутомinput
элемента и егоvalue
свойством. Делает ли Selenium ужасную вещь, которую делает jQuery, и объединяет ли их?await
при использованииgetAttribute
.Сделать можно так:
это даст вам время, отображаемое на веб-странице.
источник
С селеном 2,
я обычно пишу это так:
ИЛИ
источник
Для привязок python это будет:
источник
После ответа @ragzzy я использую
Он работает довольно хорошо и не меняет DOM
источник
Как уже упоминалось ранее, вы можете сделать что-то подобное
Но, как видите, у вашего элемента должен быть
id
атрибут, а также jquery на вашей странице.источник
Если входное значение заполняется сценарием, который имеет некоторую задержку (например, вызов AJAX), вам нужно подождать, пока вход не будет заполнен. Например
источник
element.GetAttribute ( "значение");
Хотя, если вы не видите атрибут «значение» в html dom, вы получите значение поля, отображаемое в графическом интерфейсе.
источник
Это вроде хакерства, но работает.
Я
JavascriptExecutor
и добавилdiv
к HTML, и изменил текст вdiv
к$('#prettyTime').val()
I затем используется Selenium для извлеченияdiv
и захватить его значение. После проверки правильности значения я удалил только что созданный div.источник