che sto cercando di leggere l'esempio String 1000
da un <div>
nascosto come questo:Come leggere il testo dall'elemento nascosto con Selenium WebDriver?
<div id="hidden_div" style="visibility:hidden">1000</div>
Sono consapevole che WebElement.getText()
non funziona su elementi nascosti in Selenio 2 (WebDriver), così ho cercato di soluzioni (like this one) ea quanto pare il seguente codice dovrebbe funzionare:
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);
Ma non funziona per me, la variabile n
finisce sempre come null
. Che cosa sto facendo di sbagliato?
Secondo la FAQ Selenio WebDriver: ": Perché non è possibile interagire con gli elementi nascosti A:?. Dal momento che un utente non può leggere il testo in un elemento nascosto, WebDriver non permetterà l'accesso ad esso pure Tuttavia , è possibile utilizzare le capacità di esecuzione Javascript per chiamare getText direttamente dall'elemento ... " Ho finito per usare jQuery anche perché la mia app è basata su jQuery. Non sono sicuro se sono d'accordo con il ragionamento alla base di questa decisione espressa nelle FAQ, ma almeno c'è un modo per ottenere il testo nascosto. –
Nelle vecchie versioni di selenio (almeno 2.25), era possibile ottenere il testo di un elemento nascosto. Nelle versioni più recenti (almeno 2.39), 'getText()' restituisce una stringa vuota se l'elemento non è visibile. Questo è in entrambi i casi diverso dal comportamento quando si interagisce con elementi nascosti. Se provi ad eseguire 'click()' o 'sendKeys (...)' otterrai una ElementNotVisibleException. –
Solo per completezza: le domande frequenti su WebDriver possono essere lette in https://code.google.com/p/selenium/wiki/FrequentlyAskedQuestions. – sleske