我最近开始将我的自动化套件从WatiN转换为Selenium2。在这两种情况下,我都一直在使用C#。
虽然这些似乎是简单的问题,但我已经寻找了大约两个星期的答案,但几乎没有成功。
( 1)是否有一种方法来断言某个元素的存在?我不得不创建一个可鄙的对象,如果页面上不存在异常,就会抛出异常。在WatiN中,它非常简单,如:assert.isTrue(browser.textField(Find.ById(elementId)).exists);
( 2)是否有一种方法可以断言页面上有文本?我还没找到解决这个问题的办法。在WatiN中,我的测试应该是:assert.isTrue(browser.containsText("text"));
提前谢谢。
发布于 2011-05-19 16:31:30
我根本不会使用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方法在幕后所做的事情。
发布于 2011-05-04 14:13:00
难道没有isElementPresent(String locator)和isTextPresent(String text)函数用于Selenium对象吗?
发布于 2011-05-04 17:24:07
在回答你的第一个问题时:
如果您正在使用Selenium/Webdriver,您可以使用WebDriverWait类(请参阅以下代码:链接到这样的答案),或者您可以使用driver.FindElements(..),因为如果没有找到任何元素,它不会抛出。然后,您可以使用一些linq魔术,以获得第一次匹配。所以它看起来是这样的:driver.FindElements(..).FirstOrDefault()。
https://sqa.stackexchange.com/questions/122
复制相似问题