• 驱动程序细节和权衡


    Selenium-WebDriver的驱动程序

    WebDriver是应该写入测试的关键接口的名称,但有几种实现。这些包括:

    HtmlUnit驱动程序

    这是目前WebDriver最快和最轻量级的实现。顾名思义,这是基于HtmlUnit。HtmlUnit是没有GUI的WebBrowser的基于Java的实现。对于任何语言绑定(除java以外),Selenium Server都需要使用此驱动程序。

    driver = webdriver.Remote("http://localhost:4444/wd/hub", webdriver.DesiredCapabilities.HTMLUNIT.copy())

    优点

    • 最快的WebDriver实现
    • 纯Java解决方案,因此它是平台独立的。
    • 支持JavaScript

    缺点

    • 模拟其他浏览器的JavaScript行为

    JavaScript中的驱动程序的HtmlUnit

    目前流行的浏览器都没有使用HtmlUnit(Rhino)使用的JavaScript引擎。如果使用HtmlUnit测试JavaScript,结果可能会与这些浏览器显着不同。

    当我们说“JavaScript”时,我们实际上是指“JavaScript和DOM”。虽然DOM是由W3C定义的,但每个浏览器都有自己的怪癖和它们在实现DOM方面的差异,以及JavaScript如何与它进行交互。HtmlUnit拥有令人印象深刻的DOM完整实现,并且对使用JavaScript有很好的支持,但它与其他任何浏览器没有什么不同:它与W3C标准和主要浏览器的DOM实现都有其自身的差异。

    使用WebDriver,我们必须做出选择; 我们是否启用了HtmlUnit的JavaScript功能,并且冒着团队陷入只出现在那里的问题的风险,还是因为知道有越来越多的依赖JavaScript的站点而禁用JavaScript?我们采取了保守的方法,并且默认情况下在使用HtmlUnit时禁用了支持。每次发布WebDriver和HtmlUnit,我们都会重新评估这一决定:我们希望在某个时候在HtmlUnit上默认启用JavaScript。

    启用JavaScript

    如果您不能等待,启用JavaScript支持非常简单:

    driver = webdriver.Remote("http://localhost:4444/wd/hub", webdriver.DesiredCapabilities.HTMLUNITWITHJS)

    这将导致HtmlUnit驱动程序默认模拟Firefox 3.6的JavaScript处理。

    Firefox驱动程序

    使用Firefox插件控制Firefox浏览器。所使用的Firefox配置文件从机器上安装的内容中剥离下来,仅包含Selenium WebDriver.xpi(插件)。默认情况下,一些设置也会更改(请参阅源代码以查看哪些设置)Firefox驱动程序可以运行并在Windows,Mac,Linux上进行测试。目前在版本3.6,10,最新

    用法

    driver = webdriver.Firefox()

    优点

    缺点

    修改Firefox配置文件

    假设您想修改用户代理字符串(如上所述),但是您已经制作了一个包含数十个有用扩展的Firefox配置文件。有两种方法可以获取此配置文件。假设该配置文件是使用Firefox的配置文件管理器(firefox -ProfileManager)创建的,

    或者,如果配置文件尚未在Firefox中注册:

    在我们开发Firefox驱动程序的功能时,我们公开了使用它们的能力。例如,直到我们认为本地事件在Firefox for Linux上稳定后,它们在默认情况下处于禁用状态。要启用它们:

    profile = webdriver.FirefoxProfile()
    profile.native_events_enabled = True
    driver = webdriver.Firefox(profile)

    Internet Explorer驱动程序

    InternetExplorerDriver是一个独立的服务器,它实现WebDriver的有线协议。该驱动程序已经在Vista,Windows 7,Windows 8和Windows 8.1的适当组合下与IE 7,8,9,10和11进行了测试。

    该驱动程序支持运行32位和64位版本的浏览器。如何确定在启动浏览器时使用哪个“bit-ness”取决于启动哪个版本的IEDriverServer.exe。如果启动32位版本的IEDriverServer.exe,则将启动32位版本的IE。同样,如果启动64位版本的IEDriverServer.exe,则将启动64位版本的IE。

    用法

    driver = webdriver.Ie()

    优点

    • 运行在真实的浏览器中并支持Javascript

    缺点

    • InternetExplorerDriver显然只能在Windows上运行!
    • 相对较慢(尽管仍然非常活泼!)

    ChromeDriver

    ChromeDriver由Chromium 项目维护/支持WebDriver通过chromedriver二进制文件与Chrome一起使用。您需要同时安装chromedriver和Chrome浏览器版本。需要将chromedriver放置在系统路径的某个位置,以便WebDriver自动发现它。Chrome浏览器本身是由默认安装路径中的chromedriver发现的。这两者都可以被环境变量覆盖

    用法

    driver = webdriver.Chrome()

    优点

    • 运行在真实的浏览器中并支持JavaScript
    • 由于Chrome是基于Webkit的浏览器,ChromeDriver可能允许您验证您的网站是否在Safari中运行。请注意,由于Chrome浏览器使用自己的V8 JavaScript引擎而不是Safari的Nitro引擎,因此JavaScript执行可能会有所不同。

    缺点

     
  • 相关阅读:
    oracle调用存储过程和函数返回结果集
    怎样让Oracle的存储过程返回结果集
    Java 调用存储过程 返回结果集
    oracle多表关联删除数据表记录方法
    ORACLE多表关联UPDATE 语句
    Oracle--用户管理与权限分配
    java代码开启关闭线程(nginx)
    netty实现websocket客户端(附:测试服务端代码)
    netty同时实现http与socket
    Oracle-控制语句
  • 原文地址:https://www.cnblogs.com/weiweim/p/8463622.html
Copyright © 2020-2023  润新知