当前位置: 首页 > 科技观察

Selenium原理精修

时间:2023-03-17 01:49:31 科技观察

您可以用多种编程语言编写测试(目前支持的语言有Java、Python、Ruby、C#),Selenium可以在一种或多种浏览器中执行这些测试。Selenium最常用的版本是Selenium2和Selenium3。你可以理解为selenium3是selenium2的升级版。主要更新如下:去掉对seleniumrc的支持,全面拥抱java8。如果需要使用selenium的java绑定,那么必须使用java8。支持macOS(Sierra或更高版本),支持官方safaridriver。通过ms官方webdriver服务器支持Edge浏览器。只支持ie9.0及以上。Firefox通过Mozilla的官方geckodriver得到支持。Firefox从47版本开始使用Gecko引擎,支持多进程。简单来说,如果你想测试你的产品在最新版本的浏览器中的表现如何,你必须使用selenium3!下面我就为大家讲解一下selenium的两个核心问题:1、支持多种语言;2.您可以在多个浏览器中运行脚本。Selenium的架构可以用下图来概括。蓝色图片SeleniumLanguageBinding是我们平时使用的编码语言,包括java、python等。可以看出,这些语言并不直接与BrowserDrivers通信,而是通过JSONWireProtocol,也就是webdriver协议。详情请参考https://www.w3.org/TR/webdriver/。简单的说就是定义了一套接口规范。以我们最熟悉的点击操作为例,其对应的接口协议为:POST/session/{sessionid}/element/{elementid}/click这样,无论我们Encoding使用python代码来执行点击操作:driver.find_element_by_id("").click()或者java代码执行点击操作:driver.findElement(By.id("")).click();会通过selenium客户端程序将点击操作转换成对应的webdriver协议。这样,对于BrowserDrivers来说,只需要解析具体的协议即可,不需要关注客户端使用的是哪种代码。这就是selenium支持多语言的原理。在浏览器驱动程序中,您可以看到每个浏览器的驱动程序。这里我们以chromedriver为例进行说明。直接在代码中newChromeDriver()会启动一个ChromeDriver进程。ChromeDriver是一项独立的服务。它是谷歌为网站开发者提供的自动化测试接口。它是selenium和chrome浏览器之间通信的桥梁。chromeDriver解析webdriver协议,然后根据解析结果调用相应的RemoteDebugging协议来控制chrome浏览器。它可以与浏览器内核交互来控制浏览器。此处不再详细介绍该协议。以上就是selenium操纵chrome浏览器的原理。以此类推,大家就会明白为什么要用selenium2和3来控制不同的浏览器,需要先下载对应的浏览器驱动。