在Python中使用Selenimum Webdriver,我希望能够从以下html代码中找到My Text
:
<span class="first">My Text
<span class="second">(Total)</span>
</span>
内部span
中有一个唯一的单词(Total)
。
外部span
包含我要查找的文字,即My Text
。我怎样才能找到这个文本?
我试过使用类似的东西:
driver.find_elements_by_xpath("//*[contains(text(), '(Total)')]/prededing-sibling::span")
但它没有成功。
我很感激你的帮助。
答案 0 :(得分:3)
尝试以下解决方案以获取所需文字:
span = driver.find_element_by_xpath('//span[span="(Total)"]')
required_text = driver.execute_script('return arguments[0].childNodes[0].textContent', span).strip()
print(required_text)
'My Text'
请注意,span
文字"My Text"
不是span
文字"(Total)"
的兄弟,而是其父级,因此您无法使用{{1}获取文字preceding-sibling::span
}
答案 1 :(得分:-1)
您正在使用前面的兄弟,这是错误的,您正在查看父节点中的内容
所以使用这个
"//span[text()='(Total)']/.."
上面的xpath帮助您找到相应的父节点,然后使用编程语言来获取特定的字符串
我不懂Python,我会用以下方式在Ruby中做
a='(Total)'
puts b.element(xpath: "//span[text()='#{a}']/..").text.chomp(a).strip
=> My Text