使用 xpath 在 <div> 中获取特定字符串
Fetch a particular String in <div> using xpath
我有以下 DOM 结构 / HTML:
<div class = "something" >
<div>
<span>Some text</span>
</div>
"Automated Script"
</div>
我正在使用 Selenium Webdriver 进行测试,必须获取字符串 Automated Script 才能执行断言。
Assert.assertEquals("Automated Script",webDriver.findElement(By.xpath("/div")).getText());
但是上面的 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);
含 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()
。直接在 selenium
中是行不通的
使用 JavaScript 的 evaluate()
方法并使用 JavascriptExecutor
评估你的 xpath
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());
我有以下 DOM 结构 / HTML:
<div class = "something" >
<div>
<span>Some text</span>
</div>
"Automated Script"
</div>
我正在使用 Selenium Webdriver 进行测试,必须获取字符串 Automated Script 才能执行断言。
Assert.assertEquals("Automated Script",webDriver.findElement(By.xpath("/div")).getText());
但是上面的 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);
含 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()
。直接在 selenium
使用 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());