Python Selenium-单击包含文本的项目

Python Selenium-单击包含文本的项目,python,python-3.x,selenium,selenium-webdriver,Python,Python 3.x,Selenium,Selenium Webdriver,我有以下代码: <li class="search-choice" id="elementID"> <span>TEST.SER</span> <a href="javascript:void(0)" class="search-choice-close" rel="53"></a></li> 有什么建议吗 非常感谢。试试下面的XPath //span[text()='TEST.SER']/following::a Te

我有以下代码:

<li class="search-choice" id="elementID">
<span>TEST.SER</span>
<a href="javascript:void(0)" class="search-choice-close" rel="53"></a></li>
有什么建议吗

非常感谢。

试试下面的XPath

//span[text()='TEST.SER']/following::a
Text()TEST.SER和class=“search choice close”不在同一层次结构中,因此选项1不起作用

由定位器创建的选项2层次结构错误。span位于标记上方

选项3您尝试单击li元素而不是href。所以它不会起作用

如果要单击文本,请尝试按.XPATH(//a[@class='search-choice-close']/parent::span[contains(text(),'TEST.SER')])


如果要单击图像,只需使用.XPATH(//a[@class='search-choice-close'])

XPATH找不到正确元素的原因是,它们正在查找span和a标记的属性,就像它们是同一个元素一样,或者好像一个被嵌入到另一个元素中一样。您需要找到span元素,然后找到它后面的同级元素

您的问题的原因:

"test2": (By.XPATH, "//a[@class='search-choice-close' and contains(text(), 'TEST.SER')]")
这里您要查找的是一个包含适当的元素类的元素,但包含span元素的文本

"test3": (By.XPATH, "//a[@class='search-choice-close']//span[contains(text(),'TEST.SER')]")
在这里,您寻找的是span元素,就好像它存在于a元素中一样,但它不存在于a元素中,而是在它的旁边

"test": (By.XPATH,"//li[@class='search-choice']//span[contains(text(),'TEST.SER')]//a[ @class ='search-choice-close']")
在这里,您将执行与上面相同的操作,在span元素中查找a元素。这些元素不是彼此的后代或祖先,而是兄弟

如果需要使用span之前的span文本查找a元素,则需要查找span元素的同级元素

//span[text()='TEST.SER']/following::a
下面是有关DOM中元素层次结构的更多信息,在下次通过Xpath查找元素时,这些信息可能会对您有所帮助。

来自评论:您的图像链接已断开,请编辑您的问题并进行修复。非常感谢您的回答。阿吉塔夫的解决方案对我不起作用。但是你的解决方案是的,迪桑特,非常感谢。我不知道下面的用法。你总是拿下你放的东西吗?你能给我解释一下吗?谢谢,这取决于我们如何使用其他对象的引用深入对象位置。您可能希望了解xpath轴的概念。
//span[text()='TEST.SER']/following::a