首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Selenium2断言问题

Selenium2断言问题
EN

Stack Exchange QA用户
提问于 2011-05-04 11:53:39
回答 4查看 3.9K关注 0票数 7

我最近开始将我的自动化套件从WatiN转换为Selenium2。在这两种情况下,我都一直在使用C#

虽然这些似乎是简单的问题,但我已经寻找了大约两个星期的答案,但几乎没有成功。

( 1)是否有一种方法来断言某个元素的存在?我不得不创建一个可鄙的对象,如果页面上不存在异常,就会抛出异常。在WatiN中,它非常简单,如:assert.isTrue(browser.textField(Find.ById(elementId)).exists);

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

提前谢谢。

EN

回答 4

Stack Exchange QA用户

回答已采纳

发布于 2011-05-19 16:31:30

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

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

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

代码语言:javascript
复制
public bool PageContainsText(IWebDriver driver, string textToFind)
{
    return driver.FindElement(By.tagName("body")).Text.Contains(textToFind);
}

虽然从C#绑定的角度来看可能并不是很明显,但这些本质上就是WebDriverBackedSelenium方法在幕后所做的事情。

票数 7
EN

Stack Exchange QA用户

发布于 2011-05-04 14:13:00

难道没有isElementPresent(String locator)isTextPresent(String text)函数用于Selenium对象吗?

票数 4
EN

Stack Exchange QA用户

发布于 2011-05-04 17:24:07

在回答你的第一个问题时:

如果您正在使用Selenium/Webdriver,您可以使用WebDriverWait类(请参阅以下代码:链接到这样的答案),或者您可以使用driver.FindElements(..),因为如果没有找到任何元素,它不会抛出。然后,您可以使用一些linq魔术,以获得第一次匹配。所以它看起来是这样的:driver.FindElements(..).FirstOrDefault()

票数 2
EN
页面原文内容由Stack Exchange QA提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://sqa.stackexchange.com/questions/122

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档