https://www.cnblogs.com/yanshw/p/10852860.html
selenium的原理
Selenium 1 实现原理
Selenium 引入了 Remote Control Server 这样一个代理 Server, 脚本注入和与 Server 通讯都通过这个代理 Server 来进行。
流程说明:
- 客户端建立与 selenium-RC server 的连接。
- Selenium RC Server 启动一个浏览器(或是已经使用中),并注入脚本代码
- 将 Selenese 代码传到客户端的 Selenium-Core 中。
- Selenium-Core 翻译并解析执行用户录制的操作。
- 让代理 Server 进行通讯
- Remote Control Server 负责跟远程 Web 应用服务器进行通讯。
- 操作完成,显示结果,并执行下一指令。
来自 https://blog.csdn.net/p312011150/article/details/80672703
Selenium 1.0,又称Selenium RC ,RC是Remote Control的缩写。Selenium RC利用的原理:JavaScript代码可以方便的获取页面上的任意元素并执行各种操作。
但是因为“同源政策(Same-origin policy)”(只有来自相同域名、端口和协议的javaScript代码才能被浏览器执行),所以,要想在测试用例运行中的浏览器中,注入javascript代码,从而实现自动化web操作,Selenium RC必须“欺骗”被测站点,让它误以为被注入的代码是同源的。
那如何实现“欺骗”呢?这就是需要引入 Selenium RC Server 的原因了。其中的 Http Proxy 模块就是来「欺骗」浏览器的。除了 Selenium RC Server,Selenium RC 方案的另一部分就是 Client Libraries。
Selenium RC Server,主要包括Selenium Core,Http Proxy 和Launcher 三部分:
-
Selenium Core,是被注入到浏览器页面中的JavaScript 函数集合,用来实现界面元素的识别和操作;
-
Http Proxy,作为代理服务器修改JavaScrip的源,以达到“欺骗”被测站点的目的;
- Launcher,用来在启动测试浏览器时完成,Selenium Core 的注入和浏览器代理的设置。
Client Libraries,是测试用例代码向Selenium RC Server发送 Http 请求的接口,支持多种语言,包括 Java、C# 和 Ruby 等。
Selenium 2.0,又称 Selenium WebDriver,其原理是:使用浏览器原生的 WebDriver 实现页面操作。实现方式完全不同于 Selenium 1.0。Selenium WebDriver 是典型的 Server-Client 模式,Server 端就是 Remote Server。以下是 Selenium 2.0 工作原理:
- 当使用 Selenium 2.0 启动浏览器时,后台会同时启动基于 WebDriver Wire 协议的 Web Service 作为 Selenium 的 Remote Server,并与浏览器绑定。之后,Remote Server 就开始监听 Client 端的操作请求;
- 执行测试时,测试用例会作为 Client 端,将需要执行的页面操作请求以 Http Request 的方式发送给 Remote Server 。该 Http Request 的 body,是以 WebDriver Wire 协议规定的 JSON 格式来描述需要浏览器执行的具体操作;
- Remote Server 接收到请求后,会对请求进行解析,并将解析结果发给 WebDriver,由WebDriver 实际执行浏览器的操作;
- WebDriver 可以看做是直接操作浏览器的原生组件(Native Component),所以搭建测试环境时,通常都需要先下载浏览器对应的 WebDriver。
Selenium自动化测试框架优点:
1.广泛的支持语言,平台和浏览器。支持多种平台(Windows,Linux,Solaris)和多种浏览器(IE,Firefox,Opera,Safari),可以用多种语言(Java,Ruby,Python,Perl,PHP,C#)编写测试用例。
2.可以集成各种开发平台,如Jenkins,Maven,TestNG,QMetry,SauceLabs等。
3.支持移动测试。Appium和Selendroid都是基于Selenium,因此在测试移动应用程序时,已经精通它的开发人员可以应用相同的原则。
4.大型插件库。Selenium可通过各种插件扩展到其标准功能之外,一定要谷歌“Selenium插件<工具名称>”,这些插件不仅适用于WebDriver,也适用于Grid和Selenium IDE。
Selenium自动化测试框架缺点:
1.没有内置的图像比较。在QA过程中,自动化图像验证存在困难,要在Selenium中执行此操作,您需要第三方软件。Sikuli是一个常见的选择。它是一种基于图像的识别工具,可与Selenium很好地集成,但它有局限性 - 它必须在同一个虚拟或物理屏幕上运行,并且不能识别动画。
2.没有自带的报告功能,需要第三方插件完成。
来自 https://blog.csdn.net/w13632910369/article/details/102582652
Selenium提供了8种定位方式。
- id
- name
- class name
- tag name
- link text
- partial link text
- xpath xpath是XML路径语言
- css selector
这8种定位方式在Python selenium中所对应的方法为:
- find_element_by_id()
- find_element_by_name()
- find_element_by_class_name()
- find_element_by_tag_name()
- find_element_by_link_text()
- find_element_by_partial_link_text()
- find_element_by_xpath()
- find_element_by_css_selector()