如何使用selenium获取WebElement文本

时间:2016-05-18 11:34:45

标签: java selenium

请参阅以下内容:

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

找到我的元素:

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

因此,在找到此div后,使用带有getTextgetAttribute("innerHTML")的selenium获取文本返回:

×
User 'MyUser' deleted successfully

所以我的问题是如何只获得没有此x

的最后一行

2 个答案:

答案 0 :(得分:6)

您想要的文本存在于文本节点中,无法直接使用Selenium检索,因为它只支持元素节点。

你可以删除开头:

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

您还可以使用正则表达式从innerHTML中提取所需内容:

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

或者使用JavaScript:

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

答案 1 :(得分:3)

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

将帮助您获取div的文本