No HTML de um webapp existe o seguinte código
<input type="text" name="prettyTime" id="prettyTime" class="ui-state-disabled prettyTime" readonly="readonly">
O que realmente é mostrado na página é uma string exibindo a hora.
No Selenium Web Driver, tenho um WebElement
objeto que se refere ao <input>
uso
WebElement timeStamp = waitForElement(By.id("prettyTime"));
Quero obter o valor de WebElement
, ou, em outras palavras, o que está impresso na página. Tentei todos os WebElement
getters e nada recuperou o valor real que o usuário vê. Qualquer ajuda? Obrigado.
java
selenium
selenium-webdriver
Jamesfzhang
fonte
fonte
getAttribute("value")
é realmente como você faz isso ?! Isso não faz sentido. Há uma grande diferença entre ovalue
atributo de uminput
elemento e suavalue
propriedade. O Selenium faz a coisa horrível que o jQuery faz e os confunde?await
ao usargetAttribute
.Você pode fazer assim:
isso lhe dará o tempo de exibição na página da web.
fonte
Com selênio 2,
eu normalmente escrevo assim:
OU
fonte
Para ligações python, será:
fonte
Seguindo a resposta de @ragzzy, eu uso
Funciona muito bem e não altera o DOM
fonte
Como foi mencionado antes, você poderia fazer algo assim
Mas, como você pode ver, seu elemento deve ter um
id
atributo e também jquery em sua página.fonte
Se o valor de entrada for preenchido por um script que tem alguma latência envolvida (por exemplo, chamada AJAX), você precisa esperar até que a entrada seja preenchida. Por exemplo
fonte
element.GetAttribute ("valor");
Mesmo que você não veja o atributo "valor" no dom html, obterá o valor do campo exibido na GUI.
fonte
Isso é meio hacky, mas funciona.
Usei
JavascriptExecutor
e adicionei umdiv
ao HTML e alterei o texto nodiv
para$('#prettyTime').val()
, em seguida, usei o Selenium para recuperar odiv
e obter seu valor. Depois de testar a exatidão do valor, removi o div que acabou de ser criado.fonte