Selenium+Appium底层原理

article/2025/9/23 7:47:24

selenium 从某一方面来讲其实就是一个web服务器。

 我们启动webdriver服务时,会在webdriver服务里生成对应的session,只要服务启动起来了,无论什么类型的客户端,理论上只要获取到了生成的session,请求时带上此session,应该都是可以和webdriver服务交互的,也就可以操作浏览器了。

 当我们selenium脚本执行时,会启动对应浏览器的driver,这个driver其实就是webdriver,启动后会在本地开启一个web服务,默认端口在9515

开启服务后可以本地访问9515的服务

可见时有服务存在的,若此时将服务关闭,此时web页面时反问不到数据的。由此可见,在执行自动化脚本时会启动对应浏览器的driver,生成一个webdriver服务。

我们在执行自动化代码时,例如:

from selenium import webdriverdriver = webdriver.Chrome()
url = 'https://www.baidu.com'
driver.get(url)

get方法对应的api: 

此处driver.get()方法,其实就是在我们启动webdriver服务后,访问服务对应的api,例如里面有个/get的api路由,此时访问进去,会触发webdriver里的get方法里对应的代码,可以从源码中查看:

 get方法里面其实又执行了Command.GET方法,参数是:{'url':url},代表想要执行的url.后续会通过Command.GET方法告诉浏览器,这里是get方法,去打开对应的网址吧。

element对应的api:

又或者,当我们的脚本中需要访问的api方法是elemen时,例如:

from selenium import webdriver
from selenium.webdriver.common.by import Bydriver = webdriver.Chrome()
url = 'https://www.baidu.com'
driver.get(url)
res = driver.find_element(By.ID,'xxx')

当我们调用webdriver对应的element方法时,此时会执行被启动的webdriver服务里面的Command.FIND_ELEMETN方法:

 此时webdriver通过http协议告诉浏览器,你去执行相关的查找元素的方法吧,参数如上,浏览器接收到信息后会调用js方法:document.getElementById('xxx')方法,并返回webdriver服务相关的执行结果,webdriver再将执行结果返回我们的客户端脚本。

其他方法原理类似

 appium:其实就是将selenium2的那一套api做了封装,用在移动端,所以slenium和appium因为webdriver的session机制存在,所以可以跨平台。

Appium底层工作流

  1. test script也就是我们client端 ,客户端会传递 Desired Capabilities 给 Appium Server 创建一个会话.Appium Server 会调用 appium-uiautomator2-driver 同时将 UiAutomator2 Server 的两个 apk 安装到测试设备上.

  2. 脚本命令通过webdriver协议解析,解析后的指令传给Appium Server。

  3. appium server会把请求转发给中间件Bootstrap.jar ,它是用java写的,安装在手机上.Bootstrap监听4724端口并接收appium 的命令,最终通过调用UiAutomator的命令来实现。

  4. 最后Bootstrap将执行的结果返回给appium server。

  5. appium server再将结果返回给 appium client。


http://chatgpt.dhexx.cn/article/5WG0WGJ9.shtml

相关文章

appium底层实现原理解析

appium原理 转自 木木L玲 一、什么是Appium Appium是一个开源、跨平台的测试框架,可以用来测试原生及混合的移动端应用。Appium支持IOS、Android及FirefoxOS平台。Appium使用WebDriver的json wire协议,来驱动Apple系统的UIAutomation库、Android系统…

【Appium学习总结1】----原理

Appium 是一个开源工具,用于自动化 iOS 手机、 Android 手机和 Windows 桌面平台上的原生、移动 Web 和混合应用。 appium安卓设备通信流程: 脚本-----------------> appium server-----------------> bootstrap.jar-----------------> uiauto…

Appium的使用

一、环境配置: 1、安装Node.js 2、配置JDK环境 3、配置Android SDK环境 4、安装Appium桌面版本 5、配置Python环境,安装selenium、Appium-Python-Client库 6、安装模拟器(MuMu模拟器) 环境配置参考: 这里是引用 二、使…

Appium 介绍以及工作原理

目录 1、什么是Appium:2、Appium各类组件:3、Appium理念:4、三张图了解 Appium工作原理: 1、什么是Appium: appium是一个移动端的自动化测试框架,可用于测试原生应用、移动网页应用、混合型应用&#xff0…

了解appium自动化的工作原理(uiautomator)

一、Appium加载的过程图解 Appium的原理 WebDriver script:我们的测试脚本(java or python) Appium: 会首先开启一个监听4723端口的server,接收测试脚本发送过来的对应请求,再将对应的请求发送给中间件Bo…

appium自动化的工作原理

appium自动化的工作原理 1. Appium组件 Appium Server Appium是一个C/S结构,包括Server和Client。Appium Server是Appium的服务端,作为一个Web接口服务,使用Node.js实现。 Appium Desktop Appium Server的图像界面,可设置启…

【Appium系列】- 框架原理

目录 简介 Appium支持哪些平台呢? Appium架构 Session Desired Capabilities 简介 Appium是一个跨平台的开源的自动化测试工具,可以用于测试不同类型的移动端应用程序(Appium基础之App类型),这是一个非常优秀好用…

Appium学习日记(一)——Appium工作原理及其主要组件

Appium工作原理及其主要组件 Appium的工作原理(how Appium works) Appium的核心是一个服务器,它侦听符合API规范WebDriver的传入HTTP请求。对于那些过去使用Selenium为基于浏览器的应用程序进行测试自动化的人来说,这听起来可能已经很熟悉了。   WebD…

Appium详解

一、Appium安装 1、安装JDK(1.8.0)并配置环境 1、JDK文件下载安装下载JDK文件,点击运行安装2、配置环境(1)新建一个名为“JAVA_HOME”的环境变量,变量值为JDK的安装路径(2)选择Path…

appium工作原理详讲

appium简介 appium是一个移动端自动化框架,它采用C/S的设计模式,支持多类开发语言(java python js c#…)、支持多平台(ios android),支持跨平台使用(windows linux)。它适用于原生或混合移动应用; appium…

Appium自动化测试基础 — APPium基本原理

1、APPium自动化测试架构 APPium是一个C/S架构的自动化测试框架,APPium的核心其实是一个暴露了一系列REST API的server。(也就是Appium的核心是一个提供了一组REST API的Web服务器。) 这个server的功能其实很简单:监听一个端口&a…

Appium的工作原理终于搞清楚了

目录 1. Appium简介 1.1 Appium的理念 1.2 Appium 的设计 1.3 Appium 的概念 2. Appium原理架构 3. appium的工作流程 4. Appium-Uiautomator2-Server 4.1 Appium-Uiautomator2-Server简介 4.2 appium-uiautomator2-server运行原理 4.3 bootstrap vs appium-uiautoma…

APP自动化测试系列之Appium介绍及运行原理

在面试APP自动化时,有的面试官可能会问Appium的运行原理,以下介绍Appium运行原理。 一、Appium介绍 1.Appium概念 Appium是一个开源测试自动化框架,可用于原生,混合和移动Web应用程序测试。它使用WebDriver协议驱动IOS&#xf…

Appium工作原理

一、Appium工作原理 1、Appium启动的时候,会创建一个http\\127.0.0.1:4723\wd\hub服务端(中转站) 2、4723端口接收client(也就是测试脚本)发来的请求,解析对应的请求 3、appium server把对应的请求发给bootstrap.jar,它…

蓝桥杯C/C++ 基础练习 十六进制转八进制 C语言

题目: 分析: 思路:先将十六进制转为二进制,然后将二进制转为八进制 遇到的问题如下: 1、输入格式和输出格式,决定了需要用数组存储十六进制数、二进制数以及八进制数。由于有多个字符串(多位…

蓝桥杯——十六进制转八进制(Java解法)

这道题其实挺难的,之前做过一次,用的十六进制转化为十进制,然后用十进制再转化为八进制,代码很简单,用的jdk上自带的进制转换进行换算。 import java.util.Scanner; /** * author 作者 E-mail: WYJ 1627407425qq.com…

蓝桥杯-十六进制转八进制(Java)

蓝桥杯-十六进制转八进制(Java) 最近在练习算法题,打算应付一下下学期的蓝桥杯,写写博客记录一下我的学习过程,对算法感兴趣的朋友可以给小编点点关注(重要的事情加上强调标志,o( ̄︶ ̄)o),这个假…

蓝桥杯C语言 十六进制转八进制

十六进制转八进制 思路分析: 39十六进制先转换为4位二进制,3为0011,9为1001,所以39的二进制为00111001,又把二进制转化为3位八进制,从右边开始数,001为1,111为7,所以39的八进制为71。…

十六进制转换八进制

问题描述 给定n个十六进制正整数&#xff0c;输出它们对应的八进制数。 输入格式   输入的第一行为一个正整数n &#xff08;1<n<10&#xff09;。   接下来n行&#xff0c;每行一个由09、大写字母AF组成的字符串&#xff0c;表示要转换的十六进制正整数&#xff0…

蓝桥杯练习:C语言十六进制转八进制

这题对我来说是有点难度的,最后做出来,但是提交显示 运行错误,看不出哪里出错了. 我的思路: 将十六进制转化为二进制,二进制最后转化为八进制. 首先将十六进制存入数组,然后将数组中每一位转化为对应的十进制数,之后将再将每一位十进制数转化为二进制数,将这些二进制数以每三…