Html 获取<;中的特定字符串;部门>;使用xpath

Html 获取<;中的特定字符串;部门>;使用xpath,html,selenium-webdriver,dom,xpath,assert,Html,Selenium Webdriver,Dom,Xpath,Assert,我有以下DOM结构/HTML: <div class = "something" > <div> <span>Some text</span> </div> "Automated Script" </div> 但是上面的xpath同时获取一些文本和自动脚本。 有没有办法只获取字符串自动脚本 使用assertEquals: String divText = webDriver.findElem

我有以下DOM结构/HTML:

<div class = "something" >
    <div>
        <span>Some text</span>
    </div>
"Automated Script"
</div>
但是上面的xpath同时获取一些文本和自动脚本。
有没有办法只获取字符串自动脚本

使用
assertEquals

String divText = webDriver.findElement(By.cssSelector("div.something")).getText();
String spanText = webDriver.findElement(By.cssSelector("div.something span")).getText();
String expectedText = divText.replace(spanText, "").strip();
Assert.assertEquals("Automated Script", expectedText);
使用contains和
asserTrue

Assert.assertTrue(webDriver.findElement(By.cssSelector("div.something")).getText().contains("Automated Script"));
使用
WebDriverWait
,将等待文本并通过错误:

new WebDriverWait(driver, 5)
        .until(ExpectedConditions
                .textToBePresentInElementLocated(By.cssSelector("div.something"), "Automated Script"));

是的,在selenium中的xpath中执行
text()。直接来说,它在硒中不起作用

使用JavaScript的
evaluate()
方法,并使用
JavascriptExecutor

JavascriptExecutor js = (JavascriptExecutor)driver;
Object message = js.executeScript("var value = document.evaluate(\"//div[@class='something']/text()\",document, null, XPathResult.STRING_TYPE, null ); return value.stringValue;");
System.out.println(message.toString().trim());

最初,断言中的预期值是一个字符串变量,因此我在UI中获取字符串。
JavascriptExecutor js = (JavascriptExecutor)driver;
Object message = js.executeScript("var value = document.evaluate(\"//div[@class='something']/text()\",document, null, XPathResult.STRING_TYPE, null ); return value.stringValue;");
System.out.println(message.toString().trim());