谁能帮我一个相对的XPath表达式,该表达式将验证包含在多个span
元素中的文本
<div id="id1">
<span >Hello </span>
<span class="class2">World </span>
</div>`
我对Selenium还是陌生的,我还没有那么多地使用XPath。我需要一个XPath,它可以在一行(首选结果)甚至文本值列表中返回文本“ Hello World” 。
答案 0 :(得分:3)
此XPath,
normalize-space(//div[@id="id1"])
将返回第一个div
的空间标准化的字符串值,其id
属性值等于id1
,
Hello World
根据要求。
关键概念是元素string-value的概念。
如果您不确定div
中只有一个id="id1"
元素,或者如果您希望XPath与2.0+一起使用,请明确选择仅第一个传递给normalize-space()
:
normalize-space((//div[@id="id1"])[1])
答案 1 :(得分:1)
我认为这里不需要xpath。
对于您提供的来源,您可以对父div使用.text
,它会返回文本。
这个简单的页面:
<html>
<body>
<div id="id1">
<span >Hello </span>
<span class="class2">World </span>
</div>
</body>
</html>
此代码:
from selenium import webdriver
driver = webdriver.Chrome()
driver.get(r"C:\Git\PythonSelenium\TextSplitOverTags.html")
print(driver.find_element_by_id('id1').text)
输出看起来像在控制台中...
获得输出后,您可以验证文本是否符合预期。