java - 查找没有id的特定表

标签 java html selenium xpath html-table

我正在开发我的第一个 Selenium 项目,但遇到了一些障碍。我有一个包含 3 个不同表格的网页。我只想从这些表之一中提取数据。我面临的问题是 bootstrap 用于设置这些页面的样式,因此所有表共享相同的类,并且没有一个表具有我可以专门搜索的 id。我可以通过搜索 tr/td 的 xpath 在不同的页面上执行此操作,但由于存在多个表,这不适用于此页面。检查我想要从中提取数据的表的页面源,我得到如下内容:

<div class="col-md-4">
  <div class="panel panel-success">
    <div class="panel-panel-heading>
      <h3 class="panel-title">table title</h3>
    </div>
  <div class="table-responsive">
    <table class="table-striped table-bordered">
      <thead>...</thead>
      <tbody>
        <tr ng-repeat="element in main.elementService.elementTable" class="ng-scope">
          <td class="ng-binding">info1</td>
          <td class="ng-binding">info2</td>
          <td class="ng-binding">info3</td>
          <td class="ng-binding">info4</td>
        </tr>
        <tr ng-repeat="element in main.elementService.elementTable" class="ng-scope">
        <tr ng-repeat="element in main.elementService.elementTable" class="ng-scope">
        <tr ng-repeat="element in main.elementService.elementTable" class="ng-scope">
      </tbody>
    </table>
  </div>

所以这导致了我不确定可以使用什么来仅选择该表的问题。如果我搜索trtd我也会从页面上的其他表中获取数据。

我看到的该表的唯一独特功能是 <div class="col-md-4">. 我不知道是否可能,但我的想法是进行某种组合搜索以转到此特定 div,然后转到 xpath tr/td 从表的每个单元格中提取数据,但我我是 Selenium 的新手,我不知道如何去做这件事。我正在查看的文档似乎没有显示如何将多种策略组合在一起,并且我在谷歌搜索中遇到了困难,所以我没有找到一个谷歌链接让我深入了解如何做到这一点.

我尝试过类似的方法,但我认为我的语法不正确

 List<WebElement> TableElems = chrome.findElements(By.xpath("//div[@class='col-md-4']//tr/td"));

我也尝试过

List<WebElement> TableElems = chrome.findElements(By.xpath("//div[@class='col-md-4']" && "//tr/td"));

但是&&这里不允许使用运算符。

如果有人有任何想法可以引导我走向正确的方向,我将不胜感激。

最佳答案

您可以使用此 xpath 表达式:

"//div[@class='col-md-4']//tr/td"

与您的尝试的不同之处在于使用了 class 属性(没有 id)以及 tr 之前的双斜杠,这允许 tr 成为任意深度的 div[@id='col-md-4'] 的后代元素,而不仅仅是直接子元素。

关于java - 查找没有id的特定表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37967981/

相关文章:

html - 为什么我的 XPath 不能处理混合内容?

java - 构造函数应该有 StoreStore 屏障吗?

java - "Why Apache Harmony"或 "How to use Java 8 on Android"

html - 在 Flex 中嵌入 Google Maps API Javascript

javascript - 使用 python 从输入字段复制文本并将其保存到变量中

django - Selenium -显示有关浏览器中发生的事情的注释

java - Spring MVC 如何与 Web 应用程序中的服务、 Controller 和数据访问层相关联?

java - 公共(public)类与公共(public)静态内部类的异常

带有垂直滚动条的html列表框

javascript - 如果您移动鼠标,则不会触发 onClick 事件