我正在使用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;
}
答案 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"));