Skip to content
Advertisement

How to get WebElement text with selenium

Please see the following element:

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

Find my element:

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

So after found this div and get the text using selenium with getText or getAttribute("innerHTML") the return:

×
User 'MyUser' deleted successfully

So my question is how to get only the last line without this x

Advertisement

Answer

The text you want is present in a text node and cannot be retrieved directly with Selenium since it only supports element nodes.

You could remove the beginning :

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());

You could also extract the desired content from the innerHTML with a regular expression:

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

Or with a piece of JavaScript:

String text = (String)((JavascriptExecutor)driver).executeScript(
    "return document.querySelector('div.success > button').nextSibling.textContent;");

User contributions licensed under: CC BY-SA
2 People found this is helpful
Advertisement