Selenium WebDriver - 如何验证多行文本

qa_*_*enq 6 webdriver verify multiline

我有一个包含以下内容的html页面:

    <center> 
          This is Login page. 
          <br> 
          Please click below link to Login.
          <br> 
          <a href="xxx">Login</a> 
    </center>
Run Code Online (Sandbox Code Playgroud)

如何使用一个webdriver命令验证上面的所有静态文本?

我试过这些,但没有一个工作:(

driver.findElement(By.xpath("//*[contains(.,'This is Login page.<br>Please click below link to Login')]"))
driver.findElement(By.xpath("//*[contains(.,'This is Login page.\nPlease click below link to Login')]"))
Run Code Online (Sandbox Code Playgroud)

谁知道怎么做?

Ash*_*bhu 6

你可以做:

webDriver.findElement(By.id("<ID of center tag>")).getText().contains("This is Login page.Please click below link to Login.Login");
Run Code Online (Sandbox Code Playgroud)

随意使用您选择的定位器而不是By.id.

基本上任何WebElement的getText()都返回节点的文本内容,去掉所有HTML标签和注释.


Arr*_*ran 1

这更多是 XPath 的限制,而不是 Selenium 的限制。

我不明白为什么你在那里使用全局 XPath 选择器,更好的 XPath 选择器是:

By.XPath("//center");
Run Code Online (Sandbox Code Playgroud)

如果它是页面上唯一的“中心”标签,甚至:

By.XPath("//center[contains(text(), '这是登录页面'")

如果您通过代码执行而不是盲目地在 XPath 中搜索,那么 /r 和 /n 字符将被保留。