我的目标基本上是让 Selenium 多次单击隐藏在表中许多行和单元格中的“禁用”链接。
我正在从 Excel 电子表格中读取以循环获取“P#####”(它始终是第二个)的值。这些都是部分文本。 P##### 后面的“随机词”,我不知道。所以我需要能够通过部分文本找到元素,我认为我已经用自己的代码完成了,但我无法验证该部分是否正常工作。
大约有 1000 行,我不需要访问它们。 a href 标签的 ID 后面有随机数,与 P##### 值不对应。
这是 HTML 的样子(不是真实的):
<tbody>
<tr>
<td>1.</td>
<td>P12345 randomwordshere</td>
<td>..</td>
<td>..</td>
<td>
<ul>
<li>..</li>
<li>..</li>
<li><a id="disable_###" href="link">Disable</a></li>
</ul>
</td>
</tr>
<tr>
<td>2.</td>
<td>P23456 otherrandomwords</td>
<td>..</td>
<td>..</td>
<td>
<ul>
<li>..</li>
<li>..</li>
<li><a id="disable_###" href="link">Disable</a></li>
</ul>
</tr>
<tr>..</tr>
<tr>..</tr>
<tr>..</tr>
<tr>..</tr>
<tr>..</tr>
<tr>..</tr>
<tr>..</tr>
</tbody>
到目前为止,这是我的 python 代码的一部分,但没有成功。
for x in range(0, num_rows):
value = str(sheet.cell(x, 0))
pcode = value[7:len(value) - 1]
browser.implicitly_wait(10)
browser.find_element_by_xpath("//*[contains(text(), '" + pcode + "')]")
browser.find_element_by_xpath("//td/ul/li[contains(@id, 'disable')]").click() #this part is definitely wrong
那么如何在我拥有的相同 P#### 值的行中找到每个禁用链接?
最佳答案
您需要找到 pcode,然后执行以下操作以找到禁用。您目前的做法是丢弃第一个 find_element。
按照这些思路应该可行(对我有用)。我认为对于 python 来说,它是 following-sibling。
(//*[contains(., 'P')]/following::li/a[contains(@id, 'disable')])[i]
将您的 pcode 放在 'P' 所在的位置,然后使用 for 循环递增结果,这就是最后 '[i]' 的索引。
显然您需要进行自己的编辑,因为我们没有完整的代码来给出完整的答案,但这应该让您在正确的道路上开始。
关于python - 如何通过多行和每行单元格的表格中的部分文本查找元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48065269/