【问题标题】:Cannot get the XPath function last() to work无法让 XPath 函数 last() 工作
【发布时间】:2021-02-10 09:04:36
【问题描述】:

我正在用 selenium 测试一个网络应用程序。我正在尝试获取对提要的最新帖子的最后评论,最新帖子始终位于顶部。最后一条评论总是在帖子下方的线程底部。

现在,在我的测试提要中,最近的帖子中有两个 cmets。

第一个有这个 XPath:

/html/body/main/div/section/div[3]/div/div[2]/div[2]/div/div/div[1]/div[2]/div[2]

第二个有这个 XPath:

/html/body/main/div/section/div[3]/div/div[2]/div[2]/div/div/div[2]/div[2]/div[2]

我正在尝试使用以下 XPath 来始终获得对最新帖子的最后评论:

/html/body/main/div/section/div[3]/div/div[2]/div[2]/div/div/div[last()]/div[2]/div[2]

当我这样做时,chrome 开发工具无法识别具有该 xpath 的元素。我做错了什么?

【问题讨论】:

标签: java html xml selenium xpath


【解决方案1】:

试试这个 xpath:在你的 xpath 中添加 () 以获取更多详细信息,请阅读参考资料

(/html/body/main/div/section/div[3]/div/div[2]/div[2]/div/div/div)[last()]/div[2]/div[2]

参考- https://www.javatpoint.com/webdriver-locating-strategies-by-xpath-using-last

http://www.software-testing-tutorials-automation.com/2015/01/select-checkbox-using-position-and-last.html

【讨论】:

    【解决方案2】:

    使用 findElements 返回一个列表。然后,您可以根据需要选择该列表中的第一个或最后一个元素。如果没有您的 HTML,就很难确定确切的步骤。这样的事情应该可以帮助你:

        List<WebElement> posts = driver.findElements(By.xpath("//postElements"));
        WebElement firstPost = posts.get(0);
        List<WebElement> comments = firstPost.findElements(By.xpath("//commentsXpath"));
        WebElement lastComment = comments.get(comments.size() - 1);
    

    【讨论】:

      猜你喜欢
      • 2010-12-22
      • 1970-01-01
      • 1970-01-01
      • 2019-08-11
      • 2020-03-22
      • 2022-01-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多