硒-单击带有文本的项目

时间:2019-10-15 07:43:17

标签: 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>

它显示如下:

enter image description here

我想在元素的X上单击一次,但是要计算没有ID的名称。我尝试这样做但没有得到它:

   "test2": (By.XPATH, "//a[@class='search-choice-close' and contains(text(), 'TEST.SER')]"),
    "test3": (By.XPATH, "//a[@class='search-choice-close']//span[contains(text(),'TEST.SER')]"),
    "test": (By.XPATH,"//li[@class='search-choice']//span[contains(text(),'TEST.SER')]//a[ @class ='search-choice-close']")

有什么建议吗?

非常感谢您。

3 个答案:

答案 0 :(得分:0)

尝试在XPath以下

//span[text()='TEST.SER']/following::a

答案 1 :(得分:0)

Text()TEST.SER和class =“ search-choice-close”不在同一层次结构中,因此选项1不起作用。

定位器创建的

选项2层次结构错误。跨度在标签上方

选项3,您尝试单击li元素而不是href。这样就行不通了。

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

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

答案 2 :(得分:0)

您的xpath找不到正确的元素的原因是因为它们正在寻找span和tag的属性,就像它们是同一元素一样,或者好像它们被嵌入另一个一样。您将需要找到span元素,然后找到其后的同级元素。

您遇到的问题的原因

"test2": (By.XPATH, "//a[@class='search-choice-close' and contains(text(), 'TEST.SER')]")

在这里,您正在寻找一个元素,该元素包含a元素的正确类,但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元素内寻找一个元素。这些元素不是彼此的后代或祖先,而是兄弟姐妹。

您需要做的是找到span元素的同级元素,如果您需要使用span之前的文本查找a元素。

//span[text()='TEST.SER']/following::a

以下是有关DOM中元素层次结构的更多信息,这些信息可能对您下次在通过Xpath定位元素时遇到问题很有用。 https://www.w3schools.com/xml/xpath_nodes.asp