0

我正在尝试测试正确的标题、摘要和链接是否出现在搜索结果中。例如,在下面的示例中,我想确认至少有一条记录包含标题“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>
4

1 回答 1

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 Pattern。这是编写更简洁代码的好方法。

在按元素选择元素的不寻常方式中,InnerText您可以使用 XPath。此 XPath 选择所有包含“Title for Alpha”的元素作为InnerText

List<WebElement> titles = driver.findElements(By.xpath("//*[contains(text(), 'Title for Alpha')]"));
于 2012-07-24T07:49:00.247 回答