Próbuję odczytać przykład String 1000
z ukrytej <div>
tak:Jak odczytać tekst z ukrytego elementu za pomocą Selenium WebDriver?
<div id="hidden_div" style="visibility:hidden">1000</div>
Jestem świadomy, że WebElement.getText()
nie działa na ukrytych elementów w Selen 2 (WebDriver), więc szukałem rozwiązań (like this one) i najwyraźniej następujący kod powinien działać:
WebElement hiddenDiv = seleniumDriver.findElement(By.id("hidden_div"));
String n = hiddenDiv.getText(); // does not work (returns "" as expected)
String script = "return arguments[0].innerText";
n = (String) ((JavascriptExecutor) driver).executeScript(script, hiddenDiv);
Ale to nie działa dla mnie, zmienna n
zawsze kończy jako null
. Co ja robię źle?
Według Selen WebDriver FAQ: „: Dlaczego nie jest możliwe, aby współdziałać z ukrytymi elementami A:?. Ponieważ użytkownik nie może czytać tekst w ukrytym elemencie WebDriver nie pozwoli na dostęp do niego, jak również jednak , możliwe jest wykorzystanie możliwości wykonywania Javascript do wywoływania getText bezpośrednio z elementu ... " Skończyło się również na używaniu jQuery, ponieważ moja aplikacja jest zbudowana na jQuery. Nie jestem pewien, czy zgadzam się z uzasadnieniem tej decyzji zawartym w FAQ, ale przynajmniej istnieje sposób na uzyskanie ukrytego tekstu. –
W starszych wersjach Selenium (co najmniej 2.25) można było uzyskać tekst ukrytego elementu. W nowszych wersjach (co najmniej 2,39) 'getText()' zwraca pusty łańcuch, jeśli element nie jest widoczny. Jest to w obu przypadkach odmienne od zachowania podczas interakcji z ukrytymi elementami. Jeśli spróbujesz wykonać 'click()' lub 'sendKeys (...)' otrzymasz wyjątek ElementNotVisibleException. –
Tylko dla kompletności: WebDriver FAQ można przeczytać pod https://code.google.com/p/selenium/wiki/FrequentlyAskedQuestions. – sleske