python - Selenium/Python 根据同一行中的值单击表格单元格中的超链接
问题描述
我相信我遇到了与Python & Selenium Clicking on td value in a row based on another td in同一行的问题类似的问题
表格布局(为了清楚起见,我删除了我不感兴趣的列数据):
<tbody>
<tr class="FontWeightBold">
<td>Title ID</td>
<td>Primary Author Last Name</td>
<td>Title: Edition</td>
<td>Draft Due</td>
<td>Final Due</td>
<td>Est. Trans. Date</td>
<td>Target Pub. Date</td>
<td><td>
<td><td>
</tr>
<tr>
<td>
<span id="SmartMasterContent_TitleProposalContent_dgProposals_lBookID_0">T276065</span>
</td>
<td>..</td>
<td>..</td>
<td>..</td>
<td>..</td>
<td>..</td>
<td>..</td>
<td>
<a id="SmartMasterContent_TitleProposalContent_dgProposals_lbAccept_0" href="javascript:__doPostBack('ctl00$ctl00$SmartMasterContent$TitleProposalContent$dgProposals$ctl02$lbAccept','')">Request ISBN</a>
</td>
<td>..</td>
</tr>
<tr>
<td>
<span id="SmartMasterContent_TitleProposalContent_dgProposals_lBookID_1">T276066</span>
</td>
<td>..</td>
<td>..</td>
<td>..</td>
<td>..</td>
<td>..</td>
<td>..</td>
<td>
<a id="SmartMasterContent_TitleProposalContent_dgProposals_lbAccept_1" href="javascript:__doPostBack('ctl00$ctl00$SmartMasterContent$TitleProposalContent$dgProposals$ctl03$lbAccept','')">Request ISBN</a>
</td>
<td>..</td>
</tr>
示例问题。我想单击标题 ID(第一列)为“T276066”的表格行的“请求 ISBN”链接。
我遇到的问题之一是链接的 id 将附加行号,并且我正在查看的记录可能位于表格上的任何位置。
我的 Python 代码片段
Request_ISBN = driver.find_element_by_xpath('//a[text()="T276066"]/parent::td/preceding-sibling::td/a[text() = "Request ISBN"]')
为了尝试减少可能产生错误的区域,我将 Title ID 硬编码到 XPath 中,但是一旦代码工作,这将被一个变量替换。
xpath 代码应该是什么?
解决方案
span
用文本T276066
查找然后找到它的祖先tr
然后深入到相关的内容怎么样td/a
,请参见以下内容:
driver.find_element_by_xpath("//span[text()='T276066']/ancestor::tr/td/a[text()='Request ISBN']").click()
推荐阅读
- react-native - React Native 改变状态导致 mobx-state-tree 异常
- apache-kafka - Kafka 生产者无限日志消息:获取相关 ID 为 18345 的元数据时出错:{input-topic=UNKNOWN_TOPIC_OR_PARTITION}
- ms-access - MS Access 数据输入验证
- docker - 从 docker run 命令创建 Docker compose
- vue.js - 如何在vue js3中从本地json动态设置图像的src
- excel - 如何从日期格式的单元格中删除前导和尾随空格
- json - 访问列表中的字典键值
- javascript - 等待直到处理循环中的所有项目
- node.js - 读取从 Windows 上传的 csv 文件时出现 exceljs 错误
- javascript - 如何在 JavaScript 中的字符串后面添加数字