【问题标题】:Where does the functionality of selenium to control the browser lies in?selenium 控制浏览器的功能在哪里?
【发布时间】:2019-02-25 16:15:53
【问题描述】:

Selenium 的功能在哪里?

我在某处读到语言绑定或 API 提供胶水代码以在 java 中使用 Selenium。

胶水代码或绑定代码:连接不兼容的软件组件的代码。

Jason Huggings 编写了 JavaScriptTestRunner 来控制浏览器。控制浏览器的功能在于 JavaScriptTestRunner。 它受到同源策略的影响。 Paul Hammant 创建了 HTTP 代理来绕过同源策略。这为用多种语言编写测试打开了大门。我们提供了一个 API 来编写测试。

然后创建 WebDriver。 WebDriver 和 RC 合并形成 Selenium 2。

控制浏览器的功能去哪儿了?

  • 在 API 内?
  • 在浏览器驱动程序中?

为什么API被称为胶水代码或绑定代码?它绑定了什么?

【问题讨论】:

    标签: selenium selenium-webdriver webdriver selenium-rc same-origin-policy


    【解决方案1】:

    Selenium 在该术语的一般用法中是库 - 以模块和包组织的代码集合。在这种形式中,它是WebDriver client - it can communicate with that kind of server, following the WebDriver protocol; thus enabling a programmer to control a browser.

    控制浏览器的功能去哪儿了?

    WebDriver 协议中,and the server that translates the WebDriver commands to browser instructions, and back
    Selenium 作为客户端使您能够以您选择的语言方便地使用此功能,而无需学习或直接运行 WebDriver 请求并解析它们的响应。

    为什么API被称为胶水代码或绑定代码?它绑定了什么?

    在编程中,绑定是一个库的统一/或定义良好的 API,它将较低级别的代码(其他程序或操作系统)或协议(在这种情况下为 WebDriver)连接到更高级别的概念(您的代码)。 Wikipedia to the rescue, with more details.

    【讨论】:

    • 感谢您的信息。我正在尝试清楚地了解 Selenium。
    • 也许 SO 不是最好的平台,它有更多的实际方向和重点。我建议去不同的教程网站,通用术语的维基百科;实际上,我建议不要使用 seleniumhq.org 上的大多数 wiki 和文档 - 那里的信息非常过时(回复:您前几天的 json 电汇问题),现在并不完全相关。
    • 谢谢。能否请您推荐一些网站,我可以在其中找到真实的更新信息。
    【解决方案2】:

    胶水代码

    Glue Code 是可执行代码,通常是源代码,用于调整原本不兼容的代码的不同部分。胶水代码不会为满足任何程序requirements 提供任何功能。相反,它经常出现在允许现有库或程序相互之间interoperate 的代码中,例如在语言绑定或foreign function interfaces 中。粘合代码可以用与它粘合在一起的代码相同的语言编写,也可以用单独的glue language 编写。胶水代码在快速原型设计环境中非常有效,在这种环境中,多个组件可以快速组合成一种语言或框架。


    JavaScriptTestRunner

    Jason Huggins 在 ThoughtWorks 测试内部应用程序时减少了手动执行相同测试所需的时间,他所做的每一次更改都开发了一个 Javascript 库,该库可以驱动与网页的交互允许他针对多个浏览器自动重新运行测试。他将这个程序命名为 JavaScriptTestRunner。后来,他把 JavaScriptTestRunner 开源。这个库最终成为 Selenium Core,它是 Selenium Remote Control (RC)Selenium IDE 的所有功能的基础。

    很遗憾,要在 Same Origin Policy 中工作,Selenium Core 必须与 被测应用程序 (AUT) 放置在同一源中。因此,ThoughtWork 的另一位工程师 Paul Hammant 创建了一个服务器,该服务器将充当 HTTP 代理,在虚构的 URL 下隐藏 AUT,嵌入 Selenium Core以及一组测试并像它们来自同一来源一样交付它们。该系统被称为 Selenium Remote Control (Selenium RC),或 Selenium 1


    为什么要使用 HTTP 代理

    同样,当 Web 框架变得越来越复杂和强大时,Web 浏览器的沙盒 Javascript 环境的限制越来越限制了 Selenium Core 的有效性。 Simon 想要一个使用浏览器和操作系统的 "native" 方法直接与浏览器对话的测试工具,从而避免沙盒 Javascript 环境的限制。那时WebDriverSelenium RC 合并形成Selenium 2。所有与 Web 浏览器通信的 WebDriver 实现都使用通用的有线协议开始。此有线协议使用JSON over HTTP 定义了RESTful web service


    结论

    简而言之,控制浏览器的功能始终位于 Javascript 库 中,该库驱动与网页的交互,该库是 JavaScriptTestRunner 和后来 的一部分硒核心

    根据下面关于不同类/接口的图表,控制浏览器的功能是使用 selenium-api

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-05-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多