从Selenium RC转向Webdriver的明显原因。

时间:2012-05-28 05:04:27

标签: selenium webdriver selenium-rc selenium-webdriver

从过去4个月开始使用Selenium RC进行自动化测试。

但最近我才知道Selenium RC已被弃用。很多人建议我改为Selenium Webdriver

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

谢谢。

2 个答案:

答案 0 :(得分: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. 与硒相比,它更容易扩展webdriver。 Webdriver提供可扩展的操作类,您可以将它们组合在一起并创建自己的自定义操作。

  5. Webdriver可以支持在移动设备上进行测试,例如Iphone,ipad以及Android手机和平板电脑。

  6. 最后但并非最不重要的是,现在selenium项目中没有开展任何开发工作。无论现在有什么,将继续得到支持,但硒没有新的方法或改进。几年前,Selenium和webdriver项目合并成为Selenium 2.0

    您可以找到有关webdriver here的其他详细信息以及合并原因here

答案 1 :(得分:7)

A.J.说。

RC的局限性无法轻易克服。

  1. 可扩展性是一个很棒问题。我真的不能强调这一点。当我扩展一些RC方法来做更多正常工作时,我遇到了一个无法轻易通过的障碍。只需几个简单的方法,可以在WebDriver中使用750行代码和大量使用Command pattern在RC中完成的任务。

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

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

  4. 使用onload Javascript模式对话框无法正常工作。那些,必须再次解决。

      

    Selenium试图隐藏你的那些对话(通过替换   window.alert,window.confirm和window.prompt)所以他们不会停止   执行您的页面。如果你看到一个警告弹出窗口,那就是   可能是因为它在页面加载过程中被触发,这是   通常为时太早,我们无法保护页面。

  5. 你无法在RC中真正最大化窗口:)。

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

  7. RC不再开发,没有什么新东西。 WebDriver花了一些时间才能抓住所有功能,但现在WebDriver最终可以提供比RC更长的时间(等待和最大化)。它会变得更好!

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

  9. 这主要是它。还有一个原因是不切换:WebDriver API很年轻且仍在变化。有时候,修复bug时会有轻微的行为改变。因此,有时候,升级并发现它破坏了某些东西是痛苦的。

    那就是说,我不会回到RC,因为WebDriver可以更好地使用。而且我很期待明年的一段时间,因为WebDriver有望解决其最令人讨厌的奇怪问题。