2014-05-22 10 views
6

Ich möchte getText() mit By.id oder By.cssSelector.Selenium getText

Ich habe es geschafft, mein Problem zu lösen, indem ich getAttribute ("value"), aber ich verstehe nicht, warum getText() nicht funktioniert, wie ich es erwarte, und ich könnte es brauchen, so dass alle Hilfe geschätzt wird. Hier

ist die 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" 

Und html:

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

getText gibt nur sichtbaren Text zurück und gibt keine HTML-Elemente zurück und gibt keinen versteckten Text zurück. Zum Beispiel, mit Java hatte ich dieses Problem mit einem BR-Tag leer. Anstelle von '.getText()' habe ich '.getAttribute (" innerHTML ")' verwendet, das dann zurückgibt, wonach ich gesucht habe, einschließlich unsichtbarem HTML-Text oder verstecktem Text. – jsherk

Antwort

0

Einfache Antwort - es ist so konzipiert. getText() analysiert den Inhalt des Tags (d. H. Seinen inneren Text), der offensichtlich für Eingaben leer ist.

2

Java ele.getAttribute("innerHTML");

Dies könnte den Text bereits im Hintergrund erhalten und noch nicht auf der Seite angezeigt.

+0

Das war wirklich hilfreich in einer Situation, in der getText() eine leere Zeichenfolge zurückgab, aber Ihre Lösung den inneren Text des Elements zurückgab. Vielen Dank ! – Chris