使用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;
}

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

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"));