我有一个包含多行(tr
(的表,其中包含多个单元格(td
(
其中一个单元格包含图像超链接
我会链接以迭代表格行,并使用硒单击包含每行图像的每个单元格。
例如,这是我的一个表:
<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()
但是我收到此错误,因为该单元格似乎不是可点击的项目:
属性错误:"列表"对象没有属性"单击">
我该如何解决这个问题?
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>
子元素并单击它。