ruby - Selenium 使用 xpath 查找元素
问题描述
我需要为投资者 A 找到具有贷款金额的元素(在本例中为 100、100)
有人可以建议如何编写 xpath 来查找这些元素
[示例] 在下面的屏幕截图中,我需要找到 xpath 以获取第一行和第二行中包含文本 100 的元素,这些元素被选中了单选按钮。
xpath 下面给出了所有三个贷款金额
//td[contains(., "Investor A")]/preceding-sibling::td[descendant::input][1]/label/text()
但我只需要选择单选按钮的第一行和第二行的贷款金额
<script src="https://code.jquery.com/jquery-3.4.1.js" integrity="sha256-WpOohJOqMqqyKL9FccASB9O0KwACQJpFTUBLTYOVvVU="
crossorigin="anonymous"></script>
<html>
<head>
<style>
table {
border: 1px dashed #cccccc;
border-collapse: collapse;
}
table td {
border: 1px dashed #cccccc;
}
</style>
</head>
<body>
<table>
<tr>
<td>
<label>Loan1</label>
</td>
<td>
<input type='radio' name='L1' id='L1_one'></input>
<label>100</label>
</td>
<td>
<label>Investor A</label>
</td>
<td>
<input type='radio' name='L1' id='L1_two'></input>
<label>200</label>
</td>
<td>
<label>Investor B</label>
</td>
<td>
<input type='radio' name='L1' id='L1_three'></input>
<label>300</label>
</td>
<td>
<label>Investor C</label>
</td>
</tr>
<tr>
<td>
<label>Loan2</label>
</td>
<td>
<input type='radio' name='L2' id='L2_one'></input>
<label>100</label>
</td>
<td>
<label>Investor A</label>
</td>
<td>
<input type='radio' name='L2' id='L2_two'></input>
<label>200</label>
</td>
<td>
<label>Investor B</label>
</td>
<td>
<input type='radio' name='L2' id='L2_three'></input>
<label>300</label>
</td>
<td>
<label>Investor C</label>
</td>
</tr>
<tr>
<td>
<label>Loan3</label>
</td>
<td>
<input type='radio' name='L3' id='L3_one'></input>
<label>100</label>
</td>
<td>
<label>Investor A</label>
</td>
<td>
<input type='radio' name='L3' id='L3_two'></input>
<label>200</label>
</td>
<td>
<label>Investor B</label>
</td>
<td>
<input type='radio' name='L3' id='L3_three'></input>
<label>300</label>
</td>
<td>
<label>Investor C</label>
</td>
</tr>
</table>
</body>
解决方案
由于您正在寻找给定贷款标签 (Loan1) 和投资者 (Investor A) 的贷款金额,因此您可以使用下面的 XPath。
//tr[.//label[.='Loan1']]//label[.='Investor A']//preceding::label[1]
^ find a TR
^ that has a descendant LABEL with the loan label
^ that TR has a descendant LABEL that contains the investor name
^ then go back up the DOM and find the first LABEL
这将返回“100”。
您可以在 XPath 中插入您想要的任何贷款和投资者标签,并获得您想要的任何贷款金额。
"//tr[.//label[.='#{loanLabel}']]//label[.='#{investorLabel}']//preceding::label[1]"
推荐阅读
- reactjs - 如何使用 React 创建响应式搜索过滤器
- python - 使用来自 Tensorflow 数据集的 load() 方法加载数据集的一部分
- docker - containerd 中 docker 卷的等价物是多少?
- php - MongoDB\Driver\Manager' 未使用 php 找到
- c# - 在 C# 中过度使用 Sql Connections 是一个问题吗?
- sql - 如何排除具有相似列的行?
- excel - 从具有过滤行的单个源书中填写另一个工作簿中的特定单元格
- angular - Angular, Http Error 阻止任何进一步的请求
- android - 在标签页标签内的页面之间导航,但不会丢失标签页标签
- android-things - 您已达到设备限制。某些功能将不会启用。Android Things OTA