【问题标题】:Selenium WebDriver - how to verify multiple lines textSelenium WebDriver - 如何验证多行文本
【发布时间】:2012-05-22 07:33:49
【问题描述】:

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

    <center> 
          This is Login page. 
          <br> 
          Please click below link to Login.
          <br> 
          <a href="xxx">Login</a> 
    </center>

如何使用一个 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')]"))

有人知道怎么做吗?

【问题讨论】:

    标签: webdriver verify multiline


    【解决方案1】:

    你可以这样做:

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

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

    基本上任何 WebElement 的 getText() 都会返回节点的文本内容,去除所有 HTML 标记和 cmets。

    【讨论】:

    • 谢谢阿什温。刚刚知道 getText() 非常有用:)
    【解决方案2】:

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

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

    By.XPath("//center");
    

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

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

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

    【讨论】:

    • 我使用全局 XPath 选择器,因为它实际上是我的公共库中的代码来检查存在的文本。也许我应该在我的公共库中使用另一种方法来检查基于特定标签的文本。但回到这个问题,这意味着我应该这样做:
    • 是的,我会尝试在不包含 /r 和 /n(换行符和回车符)字符的情况下找到它,选择更简单的东西(就像我上面所做的那样)并在获得元素后检查文本。之后在代码中检查它的结构会容易得多。如果做不到这一点,您可以在中心标签中添加一个 ID 并使用 Ashwin 的答案。
    【解决方案3】:

    如果文本之间有空格,如何查找文本。

          <br> 
            <br/>
          Please click below link to Login.
          <br> 
          <a href="xxx">Login</a> 
    </center>
    

    【讨论】:

    • 在另一个页面上找到了解决方案。如果有人和我有同样的问题。使用此链接:groups.google.com/forum/#!topic/selenium-users/brPeac2QTvs,解决方案是:Assert.assertEquals("电子邮件为空白。\n请输入电子邮件!",driver.findElement(By.xpath(XXXXXXXX)).gettext());
    【解决方案4】:

    你可以用“\n”做

    return getText(supportText).contains("Information:" + "\n" +
        "This page is for use by the TECHNICAL TEAM only. Following links will be active, only if you have access (subscription) to those modules.");
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-08-15
      • 2013-01-12
      • 2011-08-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多