硒控制浏览器的功能在哪里?

时间:2019-02-02 14:43:13

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

硒的功能在哪里?

我读过某个地方,语言绑定或API提供了粘合代码以在Java中使用Selenium。

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

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

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

哪里的功能,以控制浏览器去?

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

为什么将API称为粘合代码或绑定代码?这是什么绑定?

2 个答案:

答案 0 :(得分:3)

Sel e nium在该术语的一般用法中是一个库-以模块和包形式组织的代码集合。这种形式是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
硒是客户机使您能够使用此功能,在您所选择的语言的能力 - 方便,无需你学习或直接运行webdriver的请求,并分析他们的反应

  

为什么将API称为粘合代码或绑定代码?这是什么绑定?

在编程绑定中是库的统一/或定义明确的API,该库将较低级的代码(其他程序或OS)或协议(在这种情况下为WebDriver)连接到较高级的概念(即代码)。 Wikipedia to the rescue, with more details

答案 1 :(得分:0)

胶水代码

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” 方法直接与浏览器对话,从而避免沙盒Java脚本环境的限制。那时WebDriver Selenium RC 合并形成 Selenium 2 。与Web浏览器通信的 WebDriver 的所有实现都是使用通用的有线协议开始的。该有线协议使用RESTful web service定义了JSON over HTTP


结论

简而言之,用于控制浏览器的功能始终在 Javascript库中,该库驱动了与网页的交互,该网页是 JavaScriptTestRunner 和更高版本的一部分硒芯

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

Selenium_Maven_Dependencies