2011-08-11 9 views
9

C# Selenium WebDriver를 사용 중입니다. 특정 텍스트가 페이지에 있는지 확인하고 싶습니다.Selenium2를 사용하여 페이지에 특정 텍스트가 있는지 확인하려면 어떻게합니까?

어떻게하면됩니까? 모든 셀렉터는 ID, 클래스 등을 사용하는 것처럼 보입니다. 텍스트가 페이지의 어디에 있는지 신경 쓰지 않고 페이지에 어딘가에 어딘가에 있는지 확인하고 싶습니다.

의견이 있으십니까?

PS :이 사용 JQuery와 자바 스크립트를 할 수 있지만, 분명히 그것은 모든 브라우저 드라이버에서 지원되지 않는 :

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 
} 

또는 speific div의

을 찾거나 당신은 당신과 같이 그것을 자바에서

var selenium=new WebDriverBasedSelenium(driver,url); 

selenium.IsTextPresent("text") 
+0

아름답게 간단합니다. 감사! – willem

+0

좋은 답변, 그렇지 않으면 본문 대신 html을 사용할 수 있습니다. 몇 가지 사례가 더 잘 작동했습니다. – prestomanifesto

1

당신은 <body />의 내부 텍스트를 확인하여이를 달성 할 수 있어야한다.

0

같은 것을 셀레늄 클래스 WebDriverBasedSelenium를 사용하여 수행 할 수 있습니다

부울 어떤 = 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도 사용하고 있습니다.

관련 문제