我有一个复杂的html结构,有很多表和div ..而且结构可能会改变。如何通过跳过其间的元素来查找xpath。 例如:
<table>
<tr>
<td>
<span>First Name</span>
</td>
<td>
<div>
<table>
<tbody>
<tr>
<td>
<div>
<table>
<tbody>
<tr>
<td>
<img src="1401-2ATd8" alt="" align="middle">
</td>
<td><span><input atabindex="2" id=
"MainLimitLimit" type="text"></span></td>
</tr>
</tbody>
</table>
</div>
</td>
</tr>
</tbody>
</table>
</div>
</td>
</tr>
</table>
我必须得到关于&#34;名字&#34;的输入元素。跨度
例如:
By.xpath("//span[contains(text(), 'First Name')]/../../td[2]/div/table/tbody/tr/td/table/tbody/tr/td[2]/input")
但..我可以跳过htmls之间并直接访问输入元素......类似于什么?
By.xpath("//span[contains(text(), 'First Name')]/../../td[2]//input[contains@id,'MainLimitLimit')]")
答案 0 :(得分:1)
您可以使用//
,这意味着在任何级别
By.xpath("//span[contains(text(), 'First Name')]//td[2]/input[contains@id,'MainLimitLimit')]")
答案 1 :(得分:1)
你可以尝试这个Xpath:
//td[contains(span,'First Name')]/following-sibling::td[1]//input[contains(@id, 'MainLimitLimit')]
说明:
选择<td><span>First Name</span></td>
元素:
//td[contains(span,'First Name')]
然后在<td>
元素旁边获取<td>
元素:
/following-sibling::td[1]
然后在上面第2步中选择的<input>
元素中获取<td>
元素:
//input[contains(@id, 'MainLimitLimit')]
答案 2 :(得分:0)
您可以使用“名字”范围作为谓词。请尝试以下代码
//td[preceding-sibling::td[span[contains(text(), 'First Name')]]]//input[contains(@id,'MainLimitLimit')]