Skip to content

Selenium原理分析

Selenium 原理分析

简介

Selenium 是一个用于 Web 应用程序自动化测试工具。Selenium 测试能够直接在浏览器中执行,模拟真实用户的操作。支持的浏览器包括 IE(7, 8, 9, 10, 11),Mozilla Firefox,Safari,Google Chrome,Opera 等。这使得 Selenium 成为一个强大的跨浏览器测试工具,适用于各种 Web 应用程序的自动化测试需求。

Selenium 自动化测试的三大组成

  1. 测试脚本:客户端脚本,使用 Python 或 Java 编写,负责定义测试逻辑和交互行为。
  2. 浏览器驱动:不同浏览器需要相应的驱动程序,用于实现对浏览器的控制。这是通过 Selenium 提供的 Web Driver 来实现的。起作用就是将测试脚本的指令转化为浏览器可执行的动作。
  3. 浏览器:测试目标,即被用于执行测试的浏览器。Selenium 提供了各种主流浏览器的支持,包括 Chrome。

Selenium 是如何实现对浏览器的自动化测试

以 python 代码为例:

注册谷歌浏览器驱动实例对象

from selenium import webdriver
driver =webdriver.Chrome()

代码:webdriver.Chrome()会执行一个 cmd 命令,该命令的目的是启动一个 ChromeDriver.exe 浏览器驱动程序。

事实上,我们手动点击浏览器时,也会在后台启动这样一个程序,因为这个驱动程序是控制浏览器各种操作的关键。

打开浏览器页面

driver.get("https://www.baidu.com/")

selenium\webdriver\chrome\webdriver.py这个代码里存在一个父类:RemoteWebDriver

当调用driver.get("")方法时,便会初始化这个父类,在这个父类的初始化函数中便存在向服务器发送 post 请求的方法self.start_session(capabilities,browser_profile)返回一个 sessionId,用以标明当前浏览器页面的会话对象。

操作浏览器

找到元素并进行点击操作

driver.findelement(By.Id,"asd").click()

浏览器操作接口地址

包:selenium.webdriver.remote.remote_connection import RemoteConnection里定义了 selenium 操作需要的接口地址。

而这些接口地址全部封装在浏览器驱动程序中,即所有浏览器操作都是通过访问这些接口来实现。

如何操作这些接口来实现浏览器控制

使用 execute 方法调用 _request 方法通过 urilib3 标准库向服务器发送对应操作请求地址,进而实现浏览器操作。至于如何将这些操作与操作的对象联系起来,则需要前面打开浏览器页面时返回的 sessionId 来完成一一对应。

总结

  1. 浏览器运行的逻辑是浏览器本身是通过浏览器驱动来操作的,厂商在开发浏览器时,会将对浏览器所有的操作接口地址封装在对应浏览器的驱动程序里面。当外界需要操控浏览器时,就需要去调用这些接口。
  2. selenium 自动化测试中 selenium 本身针对不同的浏览器创建了不同的第三方库,这些第三方库中根据浏览器驱动的操作接口地址封装了 selenium 操作的方法,使代码中使用不同的 selenium 操作方法,会访问对应的驱动操作接口地址。