如何测试跨越多个元素的字符串?

时间:2020-08-19 13:12:03

标签: html css xml selenium xpath

谁能帮我一个相对的XPath表达式,该表达式将验证包含在多个span元素中的文本

<div id="id1">
  <span >Hello </span>
  <span class="class2">World </span>
</div>`

我对Selenium还是陌生的,我还没有那么多地使用XPath。我需要一个XPath,它可以在一行(首选结果)甚至文本值列表中返回文本“ Hello World”

2 个答案:

答案 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)

输出看起来像在控制台中...

getting text from selenium

获得输出后,您可以验证文本是否符合预期。