我試圖讀取例如字符串1000
了一個隱藏的<div>
這樣的:如何使用Selenium WebDriver從隱藏元素中讀取文本?
<div id="hidden_div" style="visibility:hidden">1000</div>
我知道WebElement.getText()
沒有在硒2(webdriver的)隱藏要素工作,所以我搜索解決方案(like this one),顯然下面的代碼應該工作:
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);
但它不爲我工作,可變n
最終總是爲null
。我究竟做錯了什麼?
根據硒webdriver的常見問題解答:「:爲什麼不可以隱藏元素交互 ?答:因爲用戶無法在一個隱藏的元素中讀取文本,webdriver的將不允許訪問它,以及 然而,有可能使用Javascript執行能力直接從元素調用getText ...「 我最終也使用jQuery,因爲我的應用程序構建在jQuery上。不知道我是否同意FAQ中表達的這一決定背後的推理,但至少有一種方法可以隱藏文本。 –
在較舊的Selenium版本(至少2.25)中,可以獲取隱藏元素的文本。在新版本(至少2.39)中,如果元素不可見,'getText()'返回一個空字符串。這兩種情況都與隱藏元素交互時的行爲不同。如果你嘗試執行'click()'或'sendKeys(...)',你會得到一個ElementNotVisibleException異常。 –
僅爲了完整:WebDriver FAQ可以在https://code.google.com/p/selenium/wiki/FrequentlyAskedQuestions中閱讀。 – sleske