我想在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读取它?
答案 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。
希望这个答案对你有帮助