【问题标题】:What's difference between protractor (Selenium webdriver) VS ghostdriver (phantomjs webdriver)?量角器(Selenium webdriver)VS ghostdriver(phantomjs webdriver)有什么区别?
【发布时间】:2014-03-17 13:42:31
【问题描述】:

我想澄清一下量角器与 Ghostdriver 之间的区别。

  1. 带量角器:

    • 启动 selenium Web 服务器进行测试。
    • 多浏览器测试。
    • 无论何时开始测试,它都会打开浏览器。
  2. 使用ghostdriver:

    • 启动 phantomjs 网络服务器。
    • 也可以配置多个浏览器。
    • 可以与 selenium 单独运行或与 selenium 集成。

我的问题是 PhantomJS webdriver 可以在没有 selenium webdriver、多个浏览器的情况下单独运行并且对 CI 有好处。为什么我们需要运行 selenium 并使用 ghostdriver 将 selenium 与 phantomjs 集成?

【问题讨论】:

    标签: selenium selenium-webdriver phantomjs protractor ghostdriver


    【解决方案1】:

    虽然我不确定我是否理解您的问题,但我会尽力回答。使用 WebDriver,驱动浏览器是通过标准化的JSON-over-HTTP wire protocol 完成的。这意味着您需要一个理解有线协议的“服务器”组件来驱动任何特定的浏览器。对于每个主要的桌面浏览器(Internet Explorer、Chrome 和 Firefox),都有一个 WebDriver 代码与之通信的服务器组件(分别为 IEDriverServer.exe、chromedriver.exe 或 Firefox 浏览器扩展)。 PhantomJS 还实现了一个理解 WebDriver 有线协议的服务器组件,因此与其他浏览器一起使用的 PhantomJS 可以使用相同的高级 WebDriver 代码。请注意,Selenium 服务器不需要驱动本地机器上的任何浏览器。

    现在,由于使用的协议只是通过 HTTP 传输,因此 WebDriver 有机会在一台机器上运行 WebDriver 代码,同时驱动位于完全不同机器上的浏览器。这就是 Selenium 服务器的用武之地。Selenium 服务器启动一个 HTTP 服务器,该服务器理解 WebDriver JSON 有线协议。当该服务器接收到 WebDriver 命令时,它可以将该命令转发到另一个“服务器”组件,要么在该机器上运行(作为独立的远程服务器),要么在另一台运行 Selenium 服务器实例的机器上(在“网格"配置)。

    所以回答你的问题,是的,可以在不使用 Selenium 服务器的情况下针对 PhantomJS 执行 WebDriver 代码。它同样可以在 Internet Explorer、Firefox、Chrome、Safari 和某些版本的 Opera 上执行,所有这些都无需使用 Selenium 服务器。请注意,所有这些都是真的,而根本没有提到 Protractor。由于 Protractor 基于WebDriverJS,只要有一个“服务器”组件在运行,无论是 Selenium 服务器、chromedriver.exe、IEDriverServer.exe 还是 PhantomJS,驱动程序都应该能够与该浏览器通信并驱动该浏览器。查看代码,似乎 WebDriverJS(以及扩展的 Protractor)应该能够在不需要 Selenium 服务器的情况下针对 Chrome 和 PhantomJS 执行,但我对 Protractor 对 WebDriverJS 的包装了解不够,无法与权威对话。

    【讨论】:

      猜你喜欢
      • 2016-01-09
      • 1970-01-01
      • 2016-03-12
      • 2021-02-16
      • 1970-01-01
      • 2015-01-10
      • 2018-06-13
      • 2019-03-17
      • 1970-01-01
      相关资源
      最近更新 更多