使用Selenium2,如何检查页面上是否存在某些文本?

时间:2011-08-11 12:28:33

标签: c# selenium selenium-webdriver

我正在使用C#Selenium WebDriver,我想确认页面上是否存在某些文字。

我该怎么做?所有选择器似乎都使用ID,类等。我不关心页面上的文本在哪里,我只是想确保页面上存在某处

有什么想法吗?

PS:我可以使用JQuery和Javascript来做到这一点,但显然所有浏览器驱动程序都不支持:

protected bool TextIsOnThePage(string textToFind)
{
    var javascriptExecutor = ((IJavaScriptExecutor)_driver);
    bool textFound = Convert.ToBoolean(javascriptExecutor.ExecuteScript(string.Format("return $('*:contains(\"{0}\")').length > 0", textToFind)));

    return textFound;
}

5 个答案:

答案 0 :(得分:13)

WebElement bodyTag = driver.findElement(By.tagName("body")); 
if (bodyTag.getText().contains("Text I am looking for") { 
  // do something 
} 

或找到特定的div

或者您可以使用Selenium类WebDriverBackedSelenium并执行类似

的操作
var selenium=new WebDriverBasedSelenium(driver,url);

selenium.IsTextPresent("text")

答案 1 :(得分:5)

以下是使用Selenium WebDriver 2.48.0

的更新版本
IWebDriver driver = new RemoteWebDriver(DesiredCapabilities.Firefox());
driver.Navigate().GoToUrl("http://stackoverflow.com/");
IWebElement body = driver.FindElement(By.TagName("body"));

Assert.IsTrue(body.Text.Contains("Top Questions"));

注意:Assert是一个Nunit断言,显然你可以使用你喜欢的任何断言方法。我也在使用RemoteWebDriver和Firefox这个例子。

答案 2 :(得分:1)

您应该可以通过查看<body />的内部文字来实现这一目标。

答案 3 :(得分:0)

在java中你这样做:

boolean whatever = driver.getPageSource()。contains(“无论你想找什么”);

答案 4 :(得分:0)

我找到的最简单的事情是搜索课程

IWebElement thing = driver.FindElement(By.ClassName("thingClass"));

Assert.IsTrue(thing.Text.Contains("YourText"));