如何使用xpath读取多个子tittle?

时间:2017-07-31 10:39:44

标签: html css selenium xpath

我想在selenium中使用XPath阅读CNN新闻网站的热门故事链接。我给了我的XPath,如下所示。

text = ieDriver.findElement(By.xpath(//*[@id="intl_homepage1-zone-1"]/div[2]/div/div[2]/ul/article[1]/div/div[2]/h3/a/span[1]/strong")).getText();

它只读了一个子标题,但我想阅读所有顶级商店标题我该怎么做?

我知道如果我更改它将会读取的article[2],article[3]...article[i]。有没有办法使用单一XPath读取它?

2 个答案:

答案 0 :(得分:0)

用于获取热门新闻链接的单个 xpath 是:

//div[contains(@data-analytics,'Top stories_list-hierarchical')]//h3[@class='cd__headline']/a/span[1]

您必须先将元素存储在列表中。为此,请使用" findElements "不是" findElement "因为 findElement 只会返回一个元素。

然后,您可以遍历列表并打印所有Web元素的文本。

答案 1 :(得分:0)

您需要首先使用 findElements 获取列表中的所有webElements,然后您可以迭代并阅读所有链接

List<WebElement> article_List= ieDriver.findElements(By.xpath("//*[@id="intl_homepage1-zone-1"]/div[2]/div/div[2]/ul/article");
for(WebElement article : article_List)
{
  String text = article.findElement("./div/div[2]/h3/a/span[1]/strong").getText();
}

通过这种方式,您可以遍历整个标题列表。

P.S尝试在绝对xpath上使用相对xpath。

希望这个答案对你有帮助