8

我在 HTML 中有以下表格布局(相应更改):

<table class="other-table-style">

    <tr> 
      <th>First Name</th>
      <th>Last Name</th>
      <th>Age</th>
    </tr>
    <tr>
      <td align="center" width="30%">Joe</td>
      <td align="center" width="30%">Bloggs</td>
      <td align="center" width="40%">28</td>
    </tr>
    <tr>
      <td align="center" width="30%">John</td>
      <td align="center" width="30%">Doe</td>
      <td align="center" width="40%">30</td>
    </tr>

</table>

我希望能够使用 Selenium 2.0 WebDriver 进行迭代,但我找不到任何好的示例。

任何帮助将不胜感激。

4

3 回答 3

16

用过的:

from selenium.webdriver.common.by import By

trs = driver.find_elements(By.TAG_NAME, "tr") 

tds = trs[1].find_elements(By.TAG_NAME, "td")

这允许循环遍历每一个以按照需要进行操作。

于 2012-08-22T14:09:00.833 回答
2

似乎发布此相关问题的人的代码可以让您走上正轨:

for (WebElement trElement : tr_collection) {
    List<WebElement> td_collection = trElement.findElements(By.xpath("td"));
    System.out.println("NUMBER OF COLUMNS = " + td_collection.size());
    col_num = 1;          

    if (!td_collection.isEmpty() && td_collection.size() != 1 ) {  
        for (WebElement tdElement : td_collection) {
            System.out.println("Node Name=== " + tdElement.getAttribute("class")); 
            System.out.println("Node Value=== " + tdElement.getText());
            col_num++;
        }
    }

    row_num++;
}

编辑:我稍微更改了他们的代码......他们正在累积每个 td 的类及其包含在哈希图中的文本,然后一旦他们遍历整个表,将其添加到主哈希图中。这也是 Selenium 的 Java 变体,因此您必须将其移植过来。不过,它的胆量保持不变——也许有更多硒经验的人可以提供更多信息……我更喜欢自己住在WATIR陆地上。

于 2012-08-21T14:39:00.650 回答
1

这是使用 selenium 解析表(和链接)的优秀教程。虽然它是用 Java 编写的,但翻译成 Python 是非常简单的。

例如,要使用 Python 版本的 Selenium (2.41) 读取表的第 2 行第 2 列:

from selenium import webdriver
driver = webdriver.Ie()

# assuming you're connected to your web page of interest, do:
x = driver.find_element_by_xpath('//table/tbody/tr[2]/td[2]')
于 2014-05-01T16:47:08.580 回答