我在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进行迭代,但我找不到任何好的例子。
非常感谢任何帮助。
答案 0 :(得分:11)
用于:
from selenium.webdriver.common.by import By
trs = driver.find_elements(By.TAG_NAME, "tr")
tds = trs[1].find_elements(By.TAG_NAME, "td")
这允许循环遍历每个按钮。
答案 1 :(得分:2)
似乎发布this related question的人的代码可以让您走上正轨:
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的类以及它包含在hashmap中的文本,然后一旦他们遍历了整个表,将其添加到主哈希映射。这也是Selenium的Java变种,因此您必须将其移植。它的内容仍然是相同的 - 也许拥有更多Selenium经验的人可以提供更多信息......我宁愿自己住在WATIR
土地上。
答案 2 :(得分:1)
Here is an excellent tutorial for parsing tables (and links) using 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]')