Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从Selenium RC迁移到Webdriver的明显原因。?_Selenium_Webdriver_Selenium Rc_Selenium Webdriver - Fatal编程技术网

从Selenium RC迁移到Webdriver的明显原因。?

从Selenium RC迁移到Webdriver的明显原因。?,selenium,webdriver,selenium-rc,selenium-webdriver,Selenium,Webdriver,Selenium Rc,Selenium Webdriver,从过去4个月开始,我使用Selenium RC进行自动化测试 但最近我知道Selenium RC不受欢迎。很多人建议我改成SeleniumWebDriver 那么,任何人都可以告诉我Selenium RC有什么问题,以及Webdriver如何优于RC 多谢各位 嗯,原因是多方面的。这里没有特别的顺序 Webdriver提供了比selenium RC更干净的API。最常见的例子是您有selenium.type和selenium.typeKeys,它们实际上都做相同的事情。Webdriver只为所有

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

但最近我知道Selenium RC不受欢迎。很多人建议我改成
SeleniumWebDriver

那么,任何人都可以告诉我Selenium RC有什么问题,以及Webdriver如何优于RC


多谢各位

嗯,原因是多方面的。这里没有特别的顺序

  • Webdriver提供了比selenium RC更干净的API。最常见的例子是您有selenium.type和selenium.typeKeys,它们实际上都做相同的事情。Webdriver只为所有类型相关的操作提供了一个sendKeys方法。简而言之,你可以说,webdriver类组织得更好

  • Selenium使用javascript注入工作。如果您使用selenium已经有一段时间了,那么您必须了解javascript注入的同源策略问题和限制。Webdriver通过为每个浏览器使用一个驱动程序来克服这一问题。对于firefox,这意味着webdriver将自己作为一个插件连接到浏览器上,对于IE,它使用automation atoms,对于chrome和opera,它使用chrome驱动程序

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

  • 与selenium相比,webdriver更易于扩展。Webdriver提供了可扩展的动作类,您可以组合并创建自己的自定义动作

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

  • 最后但并非最不重要的一点是,selenium项目目前还没有开发工作。无论现在提供什么,都将继续得到支持,但没有针对selenium的新方法或增强。Selenium和webdriver项目在几年前合并,成为Selenium 2.0

    你可以找到更多关于webdriver和合并原因的详细信息,A.J.是怎么说的

    RC有一些无法轻易克服的限制

  • 可扩展性是一个很大的问题。我真的怎么强调都不过分。当我扩展了一些RC方法来做更多他们通常做的工作时,我遇到了一个不容易通过的障碍。在RC中使用750行代码和大量使用,只需几个简单的方法就可以在WebDriver中完成

  • 这个。它是一种Javascript安全策略,只允许从您所在的域运行代码。而且,由于RC完全是用Javascript编写的,所以您无法轻松地在域之间切换,也无法与一些重定向或使用多个域内容框架的网站一起工作

  • 由于Javascript中的另一个安全策略,您无法填写
    输入,必须使用几种变通方法

  • 您无法很好地使用
    onload
    Javascript模式对话框。同样,这些问题必须加以解决

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

  • 您无法在RC:)中真正最大化窗口

  • 当需要等待元素时,必须编写自己的方法

  • RC不再发展,不会有什么新东西。WebDriver花了一些时间才掌握了所有的功能,但现在是时候了,WebDriver最终可以提供比RC(等待和最大化)稍多的功能了。它只会变得更好

  • RC的方法是WebDriver的一个可怜的表亲。前者返回一个
    字符串
    ,不能指定,例如特定的页面元素。后者可以直接返回许多内置语言数据结构,
    WebElements
    列表
    ,也可以将它们作为参数!这意味着您可以使用WebDriver找到一个元素,然后在其上运行一些JS。使用RC,您也必须使用JS定位元素。这是可以做到的,但难度更大,更容易出错

  • 基本上就是这样。还有一个不切换的原因:WebDriver
    API还很年轻,而且还在不断变化。有时,当他们修复一个bug时,会有轻微的行为变化。因此,有时候,升级后发现它坏了,真是让人头疼


    这就是说,我不会回到RC,因为WebDriver是如此好用。我非常期待明年WebDriver有机会修复它最令人讨厌的奇怪之处。

    如果我继续使用selenium RC,我将来会面临这个问题吗?也许吧。也许不是。如果您试图强制RC方法为您做更多的工作(例如,在不可见的元素上不失败,而是完全跳过它们),那么实现它的难度会更大。如果你曾经使用过一个重定向到其他站点的站点。如果您需要获取
    onload
    JS警报的文本。如果您需要WebDriver尚未提供的任何信息和支持。Selenium RC本身非常完整和健壮,对您来说已经足够好了。现在起作用的东西将在未来继续起作用。但是很多问题用WebDriver更容易克服…(另外,我在过去的一周里又增加了一个对我来说至关重要的原因)@FranzEbner,根据我的个人经验——是的。它比selenium 1快是的,WebDriver(selenium 2)比selenium RC(selenium 1)快