W kodzie HTML aplikacji internetowej znajduje się następujący kod
<input type="text" name="prettyTime" id="prettyTime" class="ui-state-disabled prettyTime" readonly="readonly">
To, co faktycznie jest pokazane na stronie, to ciąg znaków wskazujący czas.
W Selenium Web Driver mam WebElement
obiekt odnoszący się do <input>
using
WebElement timeStamp = waitForElement(By.id("prettyTime"));
Chcę poznać wartość WebElement
, czyli innymi słowy, co jest wydrukowane na stronie. Wypróbowałem wszystkie metody WebElement
pobierające i nic nie pobierało rzeczywistej wartości, którą widzi użytkownik. Jakaś pomoc? Dzięki.
źródło
getAttribute("value")
czy naprawdę to robisz ?! To nie ma żadnego sensu. Istnieje duża różnica międzyvalue
atrybuteminput
elementu a jegovalue
właściwością. Czy Selen robi to okropne, co robi jQuery i je łączy?await
używaniugetAttribute
.Możesz zrobić tak:
dzięki temu czas wyświetlany na stronie internetowej.
źródło
Z selenem 2,
zazwyczaj piszę to tak:
LUB
źródło
W przypadku powiązań Pythona będzie to:
źródło
Po odpowiedzi @ragzzy używam
Działa całkiem dobrze i nie zmienia DOM
źródło
Jak wspomniano wcześniej, możesz zrobić coś takiego
Ale jak widzisz, twój element musi mieć
id
atrybut, a także jquery na twojej stronie.źródło
Jeśli wartość wejściowa zostanie wypełniona przez skrypt, który ma pewne opóźnienie (np. Wywołanie AJAX), musisz poczekać, aż dane wejściowe zostaną wypełnione. Na przykład
źródło
element.GetAttribute ("wartość");
Nawet jeśli nie widzisz atrybutu „value” w html dom, otrzymasz wartość pola wyświetlaną w GUI.
źródło
To trochę hakerskie, ale działa.
Kiedyś
JavascriptExecutor
i dodanodiv
do HTML i zmieniła tekst wdiv
celu$('#prettyTime').val()
I następnie wykorzystywane Selen aby pobraćdiv
i chwycić jego wartość. Po sprawdzeniu poprawności wartości usunąłem właśnie utworzony div.źródło