12

我需要通过 WebDriver 验证页面中存在的文本。我喜欢将结果视为布尔值(真或假)。任何人都可以通过提供 WebDriver 代码来帮助解决这个问题吗?

4

8 回答 8

8

由于 zmorris 点driver.getPageSource().contains("input");不是正确的解决方案,因为它搜索所有 html,而不仅仅是它上面的文本。我建议检查这个问题:如何检查页面中是否存在某些文本? 以及 Slanec 解释的推荐方式:

String bodyText = driver.findElement(By.tagName("body")).getText();
Assert.assertTrue("Text not found!", bodyText.contains(text));
于 2014-06-18T14:53:54.433 回答
4

是的,您可以执行返回布尔值的操作。带有 TestNG 或 JUnit 的 WebDriver 中的以下 java 代码可以执行以下操作:

protected boolean isTextPresent(String text){
    try{
        boolean b = driver.getPageSource().contains(text);
        return b;
    }
    catch(Exception e){
        return false;
    }
  }

现在调用上述方法如下:

assertTrue(isTextPresent("Your text"));

或者,还有另一种方式。我认为,这是更好的方法:

private StringBuffer verificationErrors = new StringBuffer();
try {
                  assertTrue(driver.findElement(By.cssSelector("BODY")).getText().matches("^[\\s\\S]*    Your text here\r\n\r\n[\\s\\S]*$"));
  } catch (Error e) {
     verificationErrors.append(e.toString());
   }
于 2013-01-31T07:32:44.810 回答
1

如果您不关心文本的位置,那么您可以使用 Driver.PageSource 属性,如下所示:

Driver.PageSource.Contains("预期消息");

于 2012-11-05T07:13:25.427 回答
1

Driver.getPageSource() 是验证文本存在的不好方法。假设您说,driver.getPageSource().contains("input");这并不能验证屏幕上是否存在“输入”,只有“输入”存在于 html 中,就像输入标签一样。

我通常使用 xpath 验证元素上的文本:

boolean textFound = false;  
try {
    driver.findElement(By.xpath("//*[contains(text(),'someText')]"));
    textFound = true;
} catch (Exception e) {
    textFound = false;
}

如果您想要精确的文本匹配,只需删除 contains 函数:

driver.findElement(By.xpath("//*[text()='someText']));
于 2013-11-13T18:59:28.017 回答
0

注意:不是布尔值

WebDriver driver=new FirefoxDriver();
driver.get("http://www.gmail.com");

if(driver.getPageSource().contains("Ur message"))
  {
    System.out.println("Pass");
  }
else
  {
    System.out.println("Fail");
  }
于 2013-01-22T18:11:03.317 回答
0

对于 Ruby 程序员,这里是您可以断言的方法。 必须包含 Minitest 才能获得断言

    assert(@driver.find_element(:tag_name => "body").text.include?("Name"))
于 2015-07-13T20:54:57.297 回答
0

如果您只想检查显示的对象(C#):

    public bool TextPresent(string text, int expectedNumberOfOccurrences)
    {
        var elements = Driver.FindElements(By.XPath(".//*[text()[contains(.,'" + text + "')]]"));
        var dispayedElements = 0;
        foreach (var webElement in elements)
        {
            if (webElement.Displayed)
            {
                dispayedElements++;
            }
        }
        var allExpectedElementsDisplayed = dispayedElements == expectedNumberOfOccurrences;
        return allExpectedElementsDisplayed;
    }
于 2016-12-20T01:37:35.733 回答
0

下面的代码是验证页面文本的最合适方法。您可以根据自己的方便使用 8 个定位器中的任何一个。

String Verifytext= driver.findElement(By.tagName("body")).getText().trim(); Assert.assertEquals(Verifytext, "在此处粘贴需要验证的文本");

于 2016-12-19T13:33:23.483 回答