WatiN
转换为Selenium2
。在这两种情况下,我都一直使用C#
。尽管这些问题看似简单,但我一直在寻找答案大约2周,但几乎没有成功。1)有没有办法断言某个元素存在?我不得不诉诸于创建一个abject,并期望如果页面上不存在异常,则抛出该异常。在
WatiN
中,它很简单:assert.isTrue(browser.textField(Find.ById(elementId)).exists);
2)是否可以断言页面上是否存在文本?我还没有找到解决方法。在
WatiN
中,我的测试应该是:assert.isTrue(browser.containsText("text"));
预先感谢。
#1 楼
我根本不会使用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
方法在幕后所做的。#2 楼
isElementPresent(String locator)
对象没有isTextPresent(String text)
和Selenium
函数吗?#3 楼
回答第一个问题:如果使用的是Selenium / Webdriver,则可以使用WebDriverWait类(请参见此链接),也可以使用
driver.FindElements(..)
,因为如果没有元素,它不会抛出被发现。然后,您可以使用一些linq魔术来获得第一场比赛。所以看起来像这样:driver.FindElements(..).FirstOrDefault()
。#4 楼
好吧,我知道Selenium中有一个名为verifyIfTextPresent
的函数可以使用。检查此链接以获取更多信息-断言/验证文档
评论
啊,我没有意识到我必须创建一个WebDriverBackedSelenium实现才能使用selenium命令。现在,这似乎要简单得多。非常感谢您带头寻找哪里!
– Lyndon Vrooman
2011年5月4日14:47