我有以下格式我试图用硒/ Python来工作的标记属性相匹配一个元素:Xpath的:基于相邻元素
<tr>
<td><a href="www.google.com">google</a></td>
<td>useless text</td>
<td>useless text2</td>
<td>useless text3</td>
<td><a href="[email protected]">emailaddress</a></td>
</tr>
的想法是,给定一个已知的电子邮件地址(电子邮件地址td
中的href
的一部分),我可以在第一个td
中获得(并单击)a
。看起来xpath是用Selenium完成这个工作的最佳选择。我想下面的XPath:
//*[@id="page_content"]/table/tbody/tr[2]/td[2]/div/table[1]/tbody/tr/td[4]/a[contains(@href, "mailto:[email protected]")]/../../td/a[0]
但我发现了这个错误:
selenium.common.exceptions.NoSuchElementException: Message: no such element: Unable to locate element: {"method":"xpath","selector":"xpathhere"}
我知道的XPath来得到了“[email protected]”一个是正确的,因为它只是从chrome开发工具中复制而来,所以在到达第一个a
元素后,错误必须与xpath的一部分相关。任何人都可以通过我的xpath了解一些问题吗?
也许只是'// a [包含(@href,“[email protected]”)]'? – splash58
问题是我试图检索第一个'td'中的'a',所以我需要找出匹配“[email protected]”'a'后如何返回到那个级别。 – Marcatectura
你应该避免使用索引,总是使用你知道不会改变的东西,比如属性的一部分,使用索引是一个不好的做法,并不是很灵活。 – lauda