我有一个复杂的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>
我必须获取有关“名字”范围的输入元素
例如:
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')]")
您可以尝试以下Xpath:
//td[contains(span,'First Name')]/following-sibling::td[1]//input[contains(@id, 'MainLimitLimit')]
说明:
选择<td><span>First Name</span></td>元素:
<td><span>First Name</span></td>
//td[contains(span,'First Name')]
然后<td>在上方<td>元素旁边获取元素:
<td>
/following-sibling::td[1]
然后在上面第二步中选择的<input>元素内获取元素<td>:
<input>
//input[contains(@id, 'MainLimitLimit')]