我使用了 Coded UI Tests,但更广泛地使用了 Selenium Webdriver。在我的回答中,我将完全忽略两者的记录和播放功能,因为除了让自己熟悉该工具外,我不提倡使用任何一种。此外,我不会评论一个与另一个的功能,因为它们几乎相同。任何你可以用一种工具做的事情,你都可以用几乎相同的努力以某种方式用另一种工具做。
我使用 Selenium 是因为它是免费的,而且直到最近 Coded UI Tests 默认只支持 IE。最近他们增加了对 Chrome 和 Firefox 的开箱即用支持,这让我想重新评估它。
我将重点回答 API 的易用性。实际上,我更喜欢 Coded UI API 而不是 Selenium WebDriver 的 API。
以下是我更喜欢 Coded UI API 的一些原因:
- 元素是强类型的,即 Link 是一个 HtmlHyperLink 对象。在 selenium 中,一切都是 IWebElement,这意味着每个元素都具有相同的属性和方法,无论它们是否真正有用,甚至是否可用。强类型元素使智能感知更加有用,因为您知道是否公开了方法或属性,您可以在没有运行时“不支持”错误的情况下实际使用它。
- 我更喜欢 HtmlHyperLink myLink = new HtmlHyperLink(...) 语法而不是 IWebElement myLink = webdriver.FindElement(By.CssSelector(...)) 这是我的偏好,它对我来说似乎更直观,并遵循标准的面向对象的编码实践。
- 我真的很喜欢 GetChildren、GetParent、GetDesendants 方法。
可能还有一些,但通常就是这样。如果您正在寻找“缺少什么会让我的生活痛苦的编码 UI 测试?”的答案,我会说它并没有真正遗漏任何东西,所有标准的东西都在那里。
需要指出的一点是,我在 Selenium 之上构建了一个抽象层,并使 API 与 Coded UI 的 API 非常相似,因此可以拥有所有这些并且仍然使用 selenium,只是更多的前期工作。