【问题标题】:How to locate table when no Id defined for the table in Selenium WebDriver?Selenium WebDriver中没有为表定义ID时如何定位表?
【发布时间】:2014-05-30 05:41:33
【问题描述】:

我一直在网上寻找答案,似乎没有运气。

这里的问题是我试图找到以下没有为表定义 id 的动态表:

<div class="modal-body">
  <table class="table table-striped data-table">
  <thead>
        <tr>
            <th dt-bSortable="false">Name</th>
            <th dt-bSortable="false">ID</th>
            <th dt-bSortable="false">Email</th>
       </tr>
        </thead>
        <tbody>


            <tr>
                <td>NameA</td>
                <td>111</td>
                <td>nameA@test.com</td>
            </tr>
                <tr>
                <td>NameB</td>
                <td>222</td>
                <td>nameB@test.com</td>
            </tr>
                ...

我需要的是基于给定 ID 的内容,我可以找到相应的名称和电子邮件。但首先,我应该找到桌子。我尝试了以下方法,但都没有奏效:

WebElement table = driver.findElement(By.className("table table-striped data-table"));
WebElement table = driver.findElement(By.xpath("//table[@class='table table-striped data-table']"));
WebElement table = driver.findElement(By.cssSelector("table.table-striped"));

我也尝试通过以下方式直接获取所有行:

List<WebElement> rows = driver.findElements(By.xpath("//table[@class='table table-striped data-table']/tbody/tr"));

但是rows.isEmpty() 总是返回true。

请帮助我解决这个问题。提前感谢您的任何建议。

【问题讨论】:

  • xpath //table[@class='table table-striped data-table']/tbody/tr 在我的测试中工作。 div 是否包含在 frameiframe 中?
  • 我无法从 html 源代码中找到“frame”或“iframe”,但表格是在弹出对话框中生成的。
  • findElements 能给你什么?
  • 它给出了java异常,当我尝试打印它时什么也不返回。

标签: selenium xpath selenium-webdriver web-scraping


【解决方案1】:

我早就料到了

WebElement table = driver.findElement(By.cssSelector("table.table-striped"));

工作,因为这意味着,'找到带有类 table-striped 的表格元素'。但是,如果您打算“查找具有类表和类表条带化的元素”(看起来您是基于您的其他尝试),则该命令将是

WebElement table = driver.findElement(By.cssSelector(".table.table-striped"));

注意多余的'.'。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-22
    • 1970-01-01
    • 2013-01-12
    • 1970-01-01
    • 2012-12-25
    • 1970-01-01
    相关资源
    最近更新 更多