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

Ran*_*ddy 7 selenium webdriver selenium-rc selenium-webdriver

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

但最近我才知道Selenium RC已被弃用.很多人建议我换到Selenium Webdriver.

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

谢谢.

A.J*_*A.J 13

嗯,原因有很多.这里有一些没有特别的顺序

  1. Webdriver提供比硒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手机和平板电脑.

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

您可以找到有关webdriver的额外细节在这里和原因合并在这里


Pet*_*ček 7

AJ说的是什么.

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

  1. 可扩展性是一个很大的问题.我真的不能强调这一点.当我扩展一些RC方法来做更多正常工作时,我遇到了一个无法轻易通过的障碍.使用750行代码和大量使用Command模式可以在RC 中完成的任务可以通过几个简单的方法在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().前者返回a String并且不能给出例如特定页面元素.后者可以直接返回许多内置的语言数据结构WebElements,Lists以及可以采取的作为参数,太!这意味着您可以使用WebDriver找到一个元素,然后在其上运行一些JS.使用RC,您也必须使用JS定位元素.这可以做到,但更难,更容易出错.

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

也就是说,我不会回到RC,因为WebDriver可以更好地使用.而且我很期待明年的一段时间,因为WebDriver希望能解决其中最烦人的怪异问题.