Selenium2 断言问题

软件测试 自动化测试 硒2
2022-01-09 20:49:55

我最近开始将我的自动化套件WatiNSelenium2. 在这两种情况下,我一直在使用C#.

尽管这些问题看起来很简单,但我已经搜索了大约 2 周的答案,但几乎没有成功。

1)有没有办法断言元素存在?我不得不求助于创建一个 abject 并期望如果页面上不存在异常会引发异常。WatiN中,它很简单:assert.isTrue(browser.textField(Find.ById(elementId)).exists);

2)有没有办法断言页面上存在文本?我还没有找到解决这个问题的方法。WatiN中,我的测试是:assert.isTrue(browser.containsText("text"));

提前致谢。

4个回答

我根本不会使用这个WebDriverBackedSelenium类。它被设计成一个桥接类,帮助人们使用Selenium RC API(在这方面做的很少的工作)将测试迁移到Selenium WebDriver API. 相反,我会使用WebDriverBackedSelenium该类在我自己的测试中使用的技术。

在断言一个元素存在的情况下,你第一次让它更正。当您调用并且元素不存在时捕获NoSuchElementException抛出的内容。IWebDriver.FindElement()

至于测试页面上是否存在文本,我会执行以下操作:

public bool PageContainsText(IWebDriver driver, string textToFind)
{
    return driver.FindElement(By.tagName("body")).Text.Contains(textToFind);
}

尽管从绑定来看可能并不完全明显C#,但这些本质上是这些WebDriverBackedSelenium方法在幕后所做的。

对象不存在isElementPresent(String locator)isTextPresent(String text)功能Selenium吗?

回复您的第一个问题:

如果您使用的是 Selenium/Webdriver,您可以使用 WebDriverWait 类(参见:link to so answer),或者您可以使用driver.FindElements(..)它,因为如果没有找到任何元素,它不会抛出。然后,您可以使用一些 linq 魔法来获得第一场比赛。所以它看起来像这样driver.FindElements(..).FirstOrDefault()

好吧,我知道 Selenium 中有一个verifyIfTextPresent可以使用的函数。检查此链接以获取更多信息 -断言/验证文档