有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

xPath适用于最后一页,但不适用于第一页

我想在Java中使用Selenium从NCBI中提取一些数据

问题是xPath /html/body/div[2]/div[1]/form/div[1]/div[5]/div/div[5]/div[" + i + "]/div[2]/p/a在页面上获取每篇文章的标题并单击它们,在最后一页有效,但在第一页无效,我不明白为什么

driver.findElement(By.xpath("/html/body/div[2]/div[1]/form/div[1]/div[5]/div/div[5]/div[" + i + "]/div[2]/p/a")).click();

共 (1) 个答案

  1. # 1 楼答案

    我怀疑这是一个差一个错误,因为XPath的索引从1开始,并且有div[0]就不会匹配任何内容

    不过,一般来说,您的表达式非常脆弱,因为它是一个绝对表达式,路径从HTML树的根开始,一直到通过每个父级的所需元素。任何微小的布局变化都会破坏它

    相反,我们可以认真简化表达式:

    //div[contains(@class, 'rslt')]/p/a
    

    这将匹配每页20个链接

    或者,如果您更喜欢更简洁的CSS选择器:

    driver.findElements(By.cssSelector(".rslt > p > a"));