【问题标题】:How to find the xpath of element of a web page that located by it's class name | Java selenuim如何找到通过其类名定位的网页元素的xpath | Java 硒
【发布时间】:2021-11-17 22:14:29
【问题描述】:

我在网页上有一个表格,它的 xpath 有时会有所不同,但它的类名没有。所以我可以通过它的类名来处理它,但是我的代码需要那个元素的 xpath 那么如何获取那个元素的 xpath? OR如何处理其xpath时时不同的元素?

    String xpath = "here sould be the xpath of that element";
    wait_page_loading(By.xpath(table_xpath)); //this other function in my class wait the page loading
    WebElement Webtable = driver.findElement(By.xpath(table_xpath));
    List<WebElement> totalRowCount = Webtable.findElements(By.xpath(table_xpath + "/tbody/tr"));
    if(totalRowCount.size() <= 1) {
        throw new Exception("Can't find results in the problem page");
    }
    return totalRowCount.get(0).findElements(By.xpath("td")).get(6).getText();

非常感谢。

【问题讨论】:

  • 能否给我们看看网站的HTML代码?
  • @Kazi atcoder.jp/contests/abc205/submissions 这个页面例如是想获取里面表格的数据。我使用了 xpath,但我发现我不时会遇到错误
  • "//*[@id="main-container"]/div[1]/div[3]/div[2]/div[2]/table" 这个 xpath 应该总是那里。能否请您检查并确认?
  • @BlueFire : 您要提取哪个元素?
  • @Kazi 但有时会变成 "//*[@id="main-container"]/div[1]/div[3]/div[1]/div[2]/table " 因为在某些情况下不会显示页数,而在其他情况下,表格顶部还有另一个元素会更改其 xpath。我试图测试每个 xpath,但我试图找到比这更稳定的方法

标签: java selenium xpath webdriver


【解决方案1】:

我看到一个 div 然后我们有一个子表,请使用下面的 xpath :

//div[@class='table-responsive']/table

【讨论】:

    【解决方案2】:

    xPath下面返回表的所有行值。

    //div[@class='table-responsive']/table/tbody/tr
    

    如何处理其 xpath 不时变化的元素 时间?

    如果 xPath 值部分动态,我建议您使用 contains 方法。例如,

    &lt;input class = "User1235"&gt;

    在上面的xPath 中,值 1235 是动态的,在这种情况下,您可以使用contains 创建一个xPath

    //input[contains(@class,'User')]
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-05-07
      • 1970-01-01
      • 1970-01-01
      • 2020-03-25
      • 2011-09-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多