繁体   English   中英

Python + Selenium-如何找到动态元素

[英]Python + Selenium --How to find a dynamic element

我是硒的新手。 我试图单击一个元素,HTML结构如下所示:

<label>
     <span> text </span>
</label>

我需要单击<span>下的“文本”,这整个内容位于另一个span / div / body等内部,并且我正在尝试使其具有动态性,因此也可以使用其他文本来查找它。

我正在使用以下代码:

[...]
vote = input("Which option should I vote for you? :  ")
option = "//label/span[contains(.,'" + vote + "')]\""
option = str(option)
[...]
browser.find_element_by_xpath(option).click()

您可以使用CSS选择器,但是在不了解其余DOM的结构的情况下,它可能不够独特,无法可靠地获取所需的元素:

find_element_by_css_selector("label span")

多余的双引号会使您的xpath无效-这是这里的转义字符:

 "')]\""

构造option字符串时,xpath结束

//label/span[contains(.,'text')]"

,末尾的"将其破坏。

只需将其放下即可,您会很好:

option = "//label/span[contains(.,'" + vote + "')]"

你不必投option字符串-这已经是这个类型的。 另外,这种使用字符串格式的字符串构造方式更像“ pythonic”:

option = "//label/span[contains(.,'{}')]".format(vote)

要单击动态元素,可以使用以下解决方案:

vote = input("Which option should I vote for you? :  ")
browser.find_element_by_xpath("//label/span[normalize-space()='" + vote + "']").click()

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM