我正在尝试测试搜索结果中是否显示正确的标题,摘要和链接。例如,在下面的示例中,我想确认至少有一个记录包含标题“Beta的标题”,该摘要包含文本“Beta的摘要”和一个名为“链接”的链接。
<ul>
<li class="results">
<h2 class="title">Title for Alpha</h2>
<div class="summary">Summary for Alpha...</li>
<div class="link"><a href="http://www.example.com">Link</a>
</li>
<li class="results">
<h2 class="title">Title for Beta</h2>
<div class="summary">Summary for Beta...</li>
<div class="link"><a href="http://www.example.com">Link</a>
</li>
</ul>
答案 0 :(得分:0)
有很多方法可以选择它们。一个是使用CSS类。
HtmlUnitDriver driver = new HtmlUnitDriver();
driver.get("...");
List<WebElement> titles = driver.findElements(By.className("title"));
List<WebElement> summarys = driver.findElements(By.className("summary"));
List<WebElement> links = driver.findElements(By.className("link"));
for (WebElement webElement : titles) {
String innerText = webElement.getText();
// do your test....
}
如果您的页面结构更复杂,您也可以使用XPath来执行此操作。
如果您是Selenium的新手,您应该查看PageFactory模式。这是编写更清晰代码的好方法。
通过InnerText
选择元素的不寻常方式,您可以使用XPath。
此XPath选择包含“Title for Alpha”的所有元素为InnerText
List<WebElement> titles = driver.findElements(By.xpath("//*[contains(text(), 'Title for Alpha')]"));