Selenium的功能在哪里?
我在某处读过语言绑定或API提供粘合代码以在java中使用Selenium。
胶水代码或绑定代码:连接不兼容的软件组件的代码。
Jason Huggings编写了JavaScriptTestRunner来控制浏览器。控制浏览器的功能在于JavaScriptTestRunner。它遭受同源政策的影响。 Paul Hammant创建了HTTP代理以绕过同源策略。这打开了以多种语言编写测试的大门。我们提供了一个API来编写测试。
然后创建WebDriver。 WebDriver和RC合并形成Selenium 2。
控制浏览器的功能在哪里?
为什么API被称为胶水代码或绑定代码?它绑定什么?
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。
Glue Code是可执行代码,通常是源代码,用于调整原本不兼容的代码的不同部分。胶水代码不会为满足任何程序requirements提供任何功能。相反,它经常出现在代码中,允许现有的库或程序在interoperate之间,如语言绑定或foreign function interfaces。胶水代码可以用与胶合在一起的代码相同的语言编写,也可以用单独的glue language编写。在快速原型设计环境中,胶水代码非常有效,在这种环境中,几个组件可以快速组合成一种语言或框架。
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遥控器(Selenium RC)或Selenium 1。
同样,当Web框架变得越来越复杂和强大时,Web浏览器的沙盒Javascript环境的限制越来越限制了Selenium Core的有效性。 Simon想要一个测试工具,它使用浏览器和操作系统的“本机”方法直接与浏览器对话,从而避免了沙盒Javascript环境的限制。那是当WebDriver和Selenium RC合并形成Selenium 2.所有与Web浏览器通信的WebDriver实现都是使用通用的有线协议开始的。该线协议使用RESTful web service定义了JSON over HTTP。
简而言之,控制浏览器的功能始终在Javascript库中,该库驱动与作为JavaScriptTestRunner和后来的Selenium Core的一部分的网页的交互。
根据下面关于不同类/接口的图表,控制浏览器的功能是使用selenium-api