2011-08-11 35 views
9

我使用的是C#Selenium WebDriver,我想确认页面上是否存在某些文本。使用Selenium2,我如何检查页面上是否存在某些文本?

我该怎么做?所有的选择器似乎都使用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; 
} 

回答

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

或找上特有的div

,或者您可以使用硒类WebDriverBasedSelenium和做类似

var selenium=new WebDriverBasedSelenium(driver,url); 

selenium.IsTextPresent("text") 
+0

非常简单。谢谢! – willem

+0

很好的答案,或者你可以使用HTML而不是身体,我已经有一些情况下,HTML的工作更好 – prestomanifesto

1

您应该能够通过检查<body />内部文本来实现这一目标。

0

在java中你做它像这样:

布尔不管= driver.getPageSource()。contains(“无论你试图找到什么”);

4

下面是使用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")); 

注意的更新版本:断言是NUnit的断言,可以很明显的使用你喜欢的任何断言方法。本例中我也使用了RemoteWebDriver和Firefox。

相关问题