从过去4个月开始使用Selenium RC
进行自动化测试。
但最近我才知道Selenium RC已被弃用。很多人建议我改为Selenium Webdriver
。
那么,任何人都可以告诉我Selenium RC的问题以及Webdriver如何比RC好?
谢谢。
答案 0 :(得分:13)
嗯,原因有很多。这里有一些没有特别的顺序
Webdriver提供比selenium RC更清洁的API。最常见的例子是你有selenium.type和selenium.typeKeys,两者都有相同的效果。 Webdriver为所有类型相关的操作提供了一个方法sendKeys。总之,你可以说,webdriver类更有条理?
Selenium使用javascript注入工作。如果您已经使用过selenium,那么您必须了解相同的原始策略问题和javascript注入的限制。 Webdriver通过为每个浏览器使用驱动程序来克服这个问题。对于firefox,这意味着,webdriver将自己作为插件附加到浏览器,对于IE,它使用自动化原子,对于chrome和opera,它使用chrome驱动程序。
由于上述原因,webdriver测试比Selenium快
与硒相比,它更容易扩展webdriver。 Webdriver提供可扩展的操作类,您可以将它们组合在一起并创建自己的自定义操作。
Webdriver可以支持在移动设备上进行测试,例如Iphone,ipad以及Android手机和平板电脑。
最后但并非最不重要的是,现在selenium项目中没有开展任何开发工作。无论现在有什么,将继续得到支持,但硒没有新的方法或改进。几年前,Selenium和webdriver项目合并成为Selenium 2.0
答案 1 :(得分:7)
A.J.说。
RC的局限性无法轻易克服。
可扩展性是一个很棒问题。我真的不能强调这一点。当我扩展一些RC方法来做更多正常工作时,我遇到了一个无法轻易通过的障碍。只需几个简单的方法,可以在WebDriver中使用750行代码和大量使用Command pattern在RC中完成的任务。
same origin policy。它是一种Javascript安全策略,允许仅从您所在的域运行代码。由于RC完全是用Javascript编写的,因此您无法在域之间轻松切换,也无法使用某些重定向或使用包含来自多个域内容的框架的网站。
由于Javascript中的其他安全策略,您无法填写<input type='file' />
输入,因此必须使用多种解决方法。
使用onload
Javascript模式对话框无法正常工作。那些,必须再次解决。
Selenium试图隐藏你的那些对话(通过替换 window.alert,window.confirm和window.prompt)所以他们不会停止 执行您的页面。如果你看到一个警告弹出窗口,那就是 可能是因为它在页面加载过程中被触发,这是 通常为时太早,我们无法保护页面。
你无法在RC中真正最大化窗口:)。
当您需要等待元素时,您必须编写自己的方法。
RC不再开发,没有什么新东西。 WebDriver花了一些时间才能抓住所有功能,但现在WebDriver最终可以提供比RC更长的时间(等待和最大化)。它会变得更好!
RC的getEval()
方法是WebDriver executeJavascript()
的表兄弟。前者返回String
,但不能给出,例如特定的页面元素。后者可以直接返回许多内置语言数据结构WebElements
,Lists
,也可以将它们作为参数!这意味着您可以使用WebDriver找到一个元素,然后在其上运行一些JS。使用RC,您也必须使用JS定位元素。这可以做到,但更难,更容易出错。
这主要是它。还有一个原因是不切换:WebDriver
API很年轻且仍在变化。有时候,修复bug时会有轻微的行为改变。因此,有时候,升级并发现它破坏了某些东西是痛苦的。
那就是说,我不会回到RC,因为WebDriver可以更好地使用。而且我很期待明年的一段时间,因为WebDriver有望解决其最令人讨厌的奇怪问题。