7

从过去 4 个月开始,我正在使用Selenium RC.

但最近我知道 Selenium RC 已被弃用。好多人建议我换Selenium Webdriver

那么,任何人都可以告诉我 Selenium RC 的问题是什么,以及 Webdriver 如何比 RC 更好?

谢谢你。

4

2 回答 2

13

嗯,有多种原因。这里有几个没有特别的顺序

  1. Webdriver 提供了比 selenium RC 更简洁的 API。最常见的例子是你有 selenium.type 和 selenium.typeKeys,两者的效果是一样的。Webdriver 只为所有类型相关的操作提供了一种方法 sendKeys。简而言之,您可以说,webdriver 类组织得更好吗?

  2. Selenium 使用 javascript 注入工作。如果您使用 selenium 有一段时间了,那么您必须了解同源策略问题和 javascript 注入的限制。Webdriver 通过为每个浏览器使用驱动程序来克服这个问题。对于 Firefox,这意味着 webdriver 将自身作为插件附加到浏览器,对于 IE,它使用自动化原子,对于 chrome 和 opera,它使用 chrome 驱动程序。

  3. 由于上述原因,webdriver 测试比 Selenium 更快

  4. 与 selenium 相比,扩展 webdriver 要容易得多。Webdriver 提供了可扩展的动作类,您可以组合并创建自己的自定义动作。

  5. Webdriver可以支持在Iphone、ipad和android手机、平板等移动设备上进行测试。

最后但并非最不重要的一点是,现在 selenium 项目中没有任何开发工作。现在可用的任何东西都将继续得到支持,但没有针对 selenium 的新方法或增强功能。Selenium 和 webdriver 项目几年前合并并成为 Selenium 2.0

您可以在此处找到有关 webdriver 的更多详细信息以及在此处合并的原因

于 2012-05-28T06:27:42.423 回答
7

AJ 说的。

RC 存在无法轻易克服的限制。

  1. 可扩展性是一个很大的问题。我真的不能强调这一点。当我扩展一些 RC 方法以完成他们通常所做的更多工作时,我遇到了一个不容易通过的障碍。在 RC 中可以用 750 行代码和大量使用命令模式完成的事情,可以在 WebDriver 中通过几个简单的方法完成。

  2. 同源政策。它是一种 Javascript 安全策略,仅允许从您所在的域运行代码。由于 RC 完全用 Javascript 编写,因此您无法轻松地在域之间切换或使用一些重定向或使用包含来自多个域的内容的框架的网站。

  3. 由于 Javascript 中的另一个安全策略,您无法填写<input type='file' />输入,必须使用多种解决方法。

  4. 你不能很好地使用onloadJavascript 模式对话框。再次,必须解决这些问题。

    Selenium 尝试向您隐藏这些对话框(通过替换 window.alert、window.confirm 和 window.prompt),这样它们就不会停止执行您的页面。如果您看到警报弹出窗口,可能是因为它在页面加载过程中触发,这对于我们来说保护页面通常为时过早。

  5. 您不能真正最大化 RC 中的窗口 :)。

  6. 当您需要等待一个元素时,您必须编写自己的方法。

  7. RC不再开发,不会有新的东西。WebDriver 花了一些时间来掌握所有功能,但现在 WebDriver 终于可以提供比 RC 更多的功能(等待和最大化)。它只会变得更好!

  8. RC 的getEval()方法是 WebDriver 的executeJavascript(). 前者返回 aString并且不能给出例如特定的页面元素。后者可以直接返回许多内置语言数据结构 , WebElements,Lists并且也可以将它们作为参数!这意味着您可以使用 WebDriver 找到一个元素,然后在其上运行一些 JS。使用 RC,您也必须使用 JS 来定位元素。这可以做到,但更难,更容易出错。

主要是这样。不切换也是有原因的:WebDriverAPI 还很年轻,还在不断变化。有时,当他们修复错误时,会有轻微的行为变化。因此,有时,升级并发现它破坏了某些东西是一件很痛苦的事情。

也就是说,我不会回到 RC,因为 WebDriver 使用起来更好。我非常期待明年 WebDriver 能够修复其最烦人的怪事。

于 2012-05-28T08:10:41.890 回答