使用Selenium2,我如何检查页面上是否存在某些文本
本文关键字:是否 存在 文本 检查 Selenium2 何检查 使用 | 更新日期: 2023-09-27 18:05:07
我正在使用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;
}
WebElement bodyTag = driver.findElement(By.tagName("body"));
if (bodyTag.getText().contains("Text I am looking for") {
// do something
}
或查找特定的div
或者你可以使用Selenium类WebDriverBasedSelenium并做类似
的事情var selenium=new WebDriverBasedSelenium(driver,url);
selenium.IsTextPresent("text")
这是使用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
您应该能够通过检查<body />
的内部文本来实现这一点。
在java中是这样做的:
boolean whatever = driver.getPageSource()。
我发现最简单的方法就是搜索一个类
IWebElement thing = driver.FindElement(By.ClassName("thingClass"));
Assert.IsTrue(thing.Text.Contains("YourText"));