私はこのような隠された<div>
のうちの一例文字列1000
を読みしようとしている: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をのFAQによると:「:なぜそれは隠し要素と対話することはできません A:?。ユーザーは隠し要素のテキストを読むことができないので、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