Html 获取<;中的特定字符串;部门>;使用xpath
我有以下DOM结构/HTML: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
<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());