2014-05-22 18 views
6

Chcę getText() przy użyciu By.id lub By.cssSelector.Selen getText

Udało mi się rozwiązać mój problem, robiąc getAttribute ("wartość"), ale nie rozumiem, dlaczego getText() nie działa tak, jak się tego spodziewam, i może potrzebuję go, więc cała pomoc jest doceniana.

Oto 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" 

i HTML:

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

getText zwraca tylko widoczny tekst i NIE zwraca żadnych elementów HTML i NIE zwraca żadnego ukrytego tekstu. Na przykład w Javie miałem ten problem, gdy znacznik BR powracał pusty. Zamiast '.getText()' użyłem '.getAttribute (" innerHTML ")', który zwróci to, czego szukałem, włączając w to dowolny niewidoczny HTML lub tekst, który jest ukryty. – jsherk

Odpowiedz

0

Prosta odpowiedź - została zaprojektowana w ten sposób. getText() analizuje zawartość tagu (tzn. Jego innerText), który jest oczywiście pusty dla danych wejściowych.

2

Java ele.getAttribute("innerHTML");

To może dostać już w tle i nie są wyświetlane na stronie jeszcze tekstu.

+0

To było bardzo pomocne w sytuacji, gdy getText() zwrócił pusty ciąg znaków, ale rozwiązanie zwróciło wewnętrzny tekst elementu . Dzięki ! – Chris