我有一个多行(tr
)的表,其中包含多个单元格(td
)
其中一个单元格包含图像超链接
我会链接迭代表格行,并使用selenium点击包含每行图像的每个单元格。
例如,这是我的一个表格:
<table class="thetable" cellspacing="1" >
<thead></thead>
<tbody>
<tr class="visibleRow">
<td class="Item"></td>
<td class="modified" style="color: gray;"></td>
<td class="imageHyperlink">
<a href="#" role="button" title="Edit the item">
<img src="web/service/editRow.gif" />
</a>
</td>
</tr>
<tr class="visibleRow"></tr>
<tr class="anotherow" style="display: none;"></tr>
<tr class="visibleRow"></tr>
<tr class="editorRow" style="display: none;"></tr>
</tbody>
</table>
我想要遍历的唯一行是包含类名visibleRow
的行,并且需要单击的唯一单元格是包含类名imageHyperlink
我实现了一个for循环,它遍历类visibleRow的行,将单元类名存储在单元变量中。然后单击单元格:
for row in driver.find_elements_by_css_selector("tr.visibleRow"):
cell = row.find_elements_by_class_name("imageHyperlink")
cell.click()
但是我收到此错误,因为单元格似乎不是可点击的项目:
AttributeError:&#39; list&#39;对象没有属性&#39;点击&#39;
我该如何解决这个问题?
答案 0 :(得分:1)
调用row.find_elements_by_class_name("imageHyperlink")
(注意复数名称元素 s )会返回一个列表,在您的情况下,该列表将包含零个或一个元素。添加第二级迭代应该可以解决问题:
for row in driver.find_elements_by_css_selector("tr.visibleRow"):
for cell in row.find_elements_by_class_name("imageHyperlink"):
cell.find_element_by_tag_name("a").click()
内循环迭代具有类imageHyperLink
的子元素;在您的示例中,将存在其中一个(对于第一个可见行)或无(对于其他行)。然后它会找到第一个<a>
子元素并点击它。