![](/img/trans.png)
[英]How to find iframe in a dynamic id element in selenium python
[英]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.