web-dev-qa-db-ja.com

セレンgetText

By.idまたはBy.cssSelectorを使用してgetText()を実行します。

私はなんとかgetAttribute( "value")を実行して問題を解決しましたが、なぜgetText()が期待どおりに機能しないのか理解できません。

これがJavaです:

WebDriverWait wait = new WebDriverWait(driver, 10);         
Boolean elementIsPresent = wait.until(ExpectedConditions.textToBePresentInElementValue(By.cssSelector("#general_service_name"),"[reg] general_service_name")); // true          

//WebElement general_service_name = driver.findElement(By.cssSelector("#general_service_name"));
WebElement general_service_name = driver.findElement(By.id("general_service_name"));

// Display check
Boolean isDisplayed;
if(general_service_name.isDisplayed())  isDisplayed = new Boolean(true); else isDisplayed = false; //true

String text_empty = general_service_name.getText(); //""
String text_with_value = driver.findElement(By.id("general_service_name")).getAttribute("value"); //"[reg] general_service_name"

そしてhtml:

<input id="general_service_name" type="text" value="[reg] title" name="general_service_name" style="float:left;"/>
6
Lpgfmk

http://Selenium.googlecode.com/svn/trunk/docs/api/Java/org/openqa/Selenium/WebElement.html#getText()

getText()は、WebElementのinnerTextを提供します。

入力フィールドに内部テキストがありません。テキストは値属性内にあるため、getAttribute( "value")を介してアクセスするのが正しい方法です。

12
azraelAT

Java ele.getAttribute("innerHTML");

これにより、テキストが既にバックグラウンドにあり、まだページに表示されていない可能性があります。

3
Boyka Zhu

WebElementで特定のテキストを検索する場合に使用できます。直接または文字列を介して渡す

String textoToSearch = "Text inside Webelement";
driver.findElement(By.id("someID).getText().contains("textToSearch");
0
SeekanDestroy

簡単な答え-それはこのように設計されています。 getText()は、タグのコンテンツ(つまり、innerText)を解析します。これは、入力では明らかに空です。

0
Danstahr