【问题标题】:How Selenium 3 operate web elementsSelenium 3 如何操作 Web 元素
【发布时间】:2017-04-18 05:11:27
【问题描述】:

Selenium 2 注入 JavaScript 来执行诸如click 之类的操作。

Selenium 3 是如何工作的?

【问题讨论】:

    标签: java selenium selenium3


    【解决方案1】:

    使用 Javascript 引擎的 Selenium RC :) 除了作为 JS 框架之外,它还引起了很多问题。例如,不同的浏览器对 Javascript 施加了安全限制,所以很多事情变得不可能和受到限制。

    因此,随着 Selenium 2 (Selenium WebDriver) 的发布,它已被弃用,取而代之的是与浏览器原生兼容的驱动程序。

    让我们详细说明一下。所以,Selenium RC

    • 客户端库(不同的语言实现)通过 Selenese 命令(http 请求命令)与 Selenium RC 服务器通信以执行。
    • Selenium RC 服务器使用 Selenium Core JavaScript 命令将 Selenium 命令传递给浏览器。
    • 服务器在开始测试时“注入”到浏览器中的那些 JS 命令。
    • 浏览器使用其 JS 解释器执行命令。

    所以,Selenium RC 架构是这样的:

    现在,Selenium 2 弃用了所有这些 RC-JS-Injecting 魔法。相反,WebDriver 与以本机方式(使用浏览器原子)与浏览器通信的浏览器驱动程序进行通信(使用基于 http 请求的命令)。而且,Selenium 项目负责为每个浏览器提供驱动程序!记住这一点,它在下一段很重要;)

    Selenium 2 架构如下(注意原生调用):

    Selenium 3 中,所有主要浏览器供应商 ship their own WebDriver 实现(Apple、Google、Microsoft 和 Mozilla)。而且由于浏览器供应商比任何人都更了解他们的浏览器,他们的 WebDriver 实现可以与浏览器紧密耦合,从而为您带来更好的测试体验。此外,Selenium RC 的所有踪迹都被删除。万岁!

    所以 Selenium 3 使用驱动程序执行的本机调用(如 Selenium 2)来操作 WebElements,但是这一次,浏览器驱动程序是由浏览器供应商开发的。

    【讨论】:

      【解决方案2】:

      直接取自selenium documentation页面

      Selenium-WebDriver 使用每个浏览器对自动化的原生支持直接调用浏览器。这些直接调用的方式以及它们支持的功能取决于您使用的浏览器。本章稍后将提供有关每个“浏览器驱动程序”的信息。

      对于熟悉 Selenium-RC 的人来说,这与您习惯的完全不同。 Selenium-RC 对于每个支持的浏览器都以相同的方式工作。它在浏览器加载时将 javascript 函数“注入”到浏览器中,然后使用其 javascript 在浏览器中驱动 AUT。 WebDriver 不使用这种技术。同样,它使用浏览器内置的自动化支持直接驱动浏览器。

      浏览器原生支持在what is browser's native support according to selenium webdriver中解释

      【讨论】:

      • 这是针对 Selenium 2 的。我错了 Selenium 1 (Selenium RC) 注入 JavaScript。 Selenium 2 使用原生浏览器支持。在 Selenium 3 中它是如何完成的?和 Selenium 2 一样吗?有区别吗?
      • 你读过更新日志吗?如有差异,应在此处说明。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-10-09
      • 2020-10-06
      • 1970-01-01
      • 2018-03-31
      相关资源
      最近更新 更多