【发布时间】:2018-06-12 09:54:40
【问题描述】:
我的目标是让 Selenium 多次单击隐藏在表格中的许多行和单元格中的“禁用”链接。
我正在从 Excel 电子表格中读取以获取 "P#####" 的值(它始终是 2nd )以进行循环。这些都是部分文本。 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#### 值的行中找到每个禁用链接?
【问题讨论】:
-
那么,你的问题是什么?
-
@AmosEgel 抱歉,不清楚。如何根据我拥有的每个 P#### 值找到每个禁用链接?他们在同一行,但我不知道如何做任何事情。
-
只是观察,但您的 HTML 格式不正确(无效)这可能会弄乱您的 XPATH 您可以尝试格式正确的 HTML 吗?
-
@Dan-Dev 我放在那里的 HTML 只是我正在查看的一个示例,我对 HTML 没有任何控制权,所以这就是我必须处理的解决方法。
-
如果您从 Excel 电子表格中读取 HTML,您可以先将其通过 HTML tidy 吗?但我的意思是,如果我们知道它是由于无效的 HTML 造成的,那么我们就知道从哪里开始。
标签: python html selenium xpath