2016-05-18 11 views
4

Bitte beachten Sie das folgende Element erhalten:Wie WebElement Text mit Selen

<div class="success"><button class="close" data-dismiss="alert" type="button">×</button> 
User 'MyUser' deleted successfully</div> 

Finden mein Element:

driver.findElement(By.cssSelector("div.success") 

So nach fanden diese div und bekommen den Text mit Selen mit getText oder getAttribute("innerHTML") der Rückkehr:

× 
User 'MyUser' deleted successfully 

Also meine Frage ist, wie nur die letzte Zeile erhalten, ohne diese x

+1

Bitte posten Sie die Suche Ihres Elements (zB 'by.id (" ")') –

+0

Bitte beachten Sie meine Aktualisierung e –

+0

@davidhol: Könnten Sie versuchen: '.getAttribute (" textContent ")' und antworten – nullpointer

Antwort

4

Der Text, den Sie wollen, ist vorhanden in einem Textknoten und kann nicht direkt mit Selenium abgerufen werden, da nur Elementknoten unterstützt werden.

Sie den Anfang entfernen konnte:

String innerText = driver.findElement(By.cssSelector("div.success")).getAttribute("innerHTML"); 
String text = innerText.replaceFirst(".+?</button>([^>]+).*", "$1").trim(); 

Oder mit einem Stück JavaScript:

String text = (String)((JavascriptExecutor)driver).executeScript(
    "return document.querySelector('div.success > button').nextSibling.textContent;"); 
vom innerHTML mit einem regulären Ausdruck

String buttonText = driver.findElement(By.cssSelector("div.success > button")).getText(); 
String fullText = driver.findElement(By.cssSelector("div.success")).getText(); 
String text = fullText.substring(buttonText.length()); 

Sie können auch extrahieren den gewünschten Inhalt

0
WebElement element = driver.findElement(By.className("div.success") 
element.getText(); 

werden Sie den Text des div bekommen helfen

+0

Return null .... –

+1

mein schlecht bearbeitet @davidhol – nullpointer

-1

Try this:

driver.findElement(By.cssSelector("div.success").getText().replace("x",""); 
Verwandte Themen