当前位置: 首页 > news >正文

Python+appium自动化+夜神模拟器inspector部署验证

1、自动化测试环境部署_总览图+检查表+流程图

Python需要安装Appium-Python-Clicent去定位元素;Appium是一个中间的服务器,它需要依赖node.js,python的脚本通过appium和手机进行交互;手机app的环境都是java环境,先安装jdk,再安装SDK。我们用夜神模拟器来代替手机。

确定当前环境现状,有模拟器先把Genymotion模拟器卸载掉。还有虚拟Box。我们要安装Nox夜神模拟器。

输入java -version,建议1.8以上。

输入adb devices ,有返回下面的则通过。SDK已安装。

查看Node.js,说明已经装过环境了。还有Appium等。

查看python和pycharm

查看Appium-Python-Client,在setting中检查。

2、手机自动化测试环境部署_JDK+SDK安装及验证

2.1、安装java的jdk

 下载java安装包,至少要1.8.0以上版本,也就是jdk-8u321-windows-x64.exe

Java Downloads | Oracle

首先需要安装Java的JDK, 以jdk-8u321-windows-x64.exe为例。

双击安装包安装,点击下一步

点击下一步

点击下一步,安装jre

展示已经安装成功了。点击关闭。现在我们的jdk装好了。

下面开始配置环境变量

win10 系统 点击计算机--右键--属性--高级系统设置--环境变量--系统变量,

win 11 系统,打开控制面板,搜索查看高级系统设置

点击高级-->环境变量

选择系统变量下的新建,新建一个JAVA_HOME的系统变量,变量值为Java的JDK所在路径。

C:\Program Files\Java\jdk1.8.0_321

选择“系统变量”下面的”新建“选项,变量名为“CLASSPATH,变量值.;%Java_Home%\bin;%Java_Home%\lib\dt.jar;%Java_Home%\lib\tools.jar

在环境变量中找到变量path,双击打开
在变量值最前面添加%Java_Home%\bin;%Java_Home%\jre\bin;

把后面有一个变量值C:\Windows\system32放到开头,因为%不能放在开头,否则会导致展开不了的问题。

环境变量Path点击编辑不展开解决办法_环境变量编辑页面展开不了-CSDN博客

环境变量配置完成后,点击确定选项

检查Java环境是否配置成功

按快捷键Win+R,输入cmd

输入java

输入javac

输入java -version,每次检查,都必须重新打开dos窗口

这样java的环境已经配置好了。

2.2安装SDK

将android-sdk-windows这个SDK的包放到一个没有中文路径和空格的路径下。

添加环境变量:右键计算机--属性--高级系统设置

新建环境变量 ANDROID_HOME ,里面的值为刚才SDK的路径。D:\android-sdk-windows

添加 环境变量PATH,注意分号隔开。

 D:\android-sdk-windows\platform-tools

D:\android-sdk-windows\tools

此时重新打开cmd命令行,敲一个adb,显示相应的内容,说明配对了。

输入adb devices,出现下面内容,说明安装成功了。

3、手机自动化测试环境部署_NodeJS+Appium+Python类库安装及验证

Appium手机自动化环境需要电脑4G以上内存,最好8G,如果过小,就可能用不了

3.1安装node-v11.0.0-x64.msi

双击点击运行

选择next

勾选接受,并点击next

安装到默认路径底下

选择next

next

选择install

正在安装

安装完成,点击finish

S2:配置node环境变量

将路径拷出来

C:\Program Files\nodejs

放入环境变量后面的path路径下右键--属性--高级系统设置

将变量放入到PATH里面去,注意前面加英文分号,再点3次确定。

检验一下node能不能用,cmd打开命令行窗口,输入“node --version”,注意中间有空格,两个--。

或者node -v

这个时候可以看到版本是v11.0.0,那我们环境的配置,是没有问题的。一个机器上只安最新的一个版本就可以了。

3.2安装appium

双击“appium-desktop-setup-1.7.1.exe”进行安装。这个版本太低,会和夜神模拟器不匹配,有问题,只做演示,建议换成下面的版本。

Appium-windows-1.21.0-1.exe

点击运行

选第一项,并安装

需要一定的时间(1:05s)

完成后,先把运行Appium前面的对勾去掉,点击完成。

S2:配置appium

先配置环境变量,找到安装路径

C:\Program Files (x86)\Appium

在用户PATH里面添加环境变量。同样确定3下。

S3:验证appium  cmd命令行输入 appium -doctor

弹出appium的界面

桌面有appium的图标

这样appium的安装已经好了,可以看下一步内容。

3.3 安装Python类库

 安装Appium-Python-Client和模拟器

首先准备安装包genymotion-2.12.1-vbox.exe---在线安装Appium-Python-Client-安装模拟器。

S1:pip install Appium-python-client

先安装Appium-Python-Client

试用pip命令在线安装。一定要注意要有网络。

S2:验证

退出重新进入pycharm,File--Setting--Project--Python Interpreter,看里面有没有Appium-Python-Client

如果没有,需要在解释器-Python Interpreter里面的加号+里面输入Appium-Python-Client重新添加一下,因为pip只是安装到本地,没有放到项目中来。

如果和selenium类库冲突,先把selenium类库删除掉再安装,就不会有问题了。

from appium.webdriver.webdriver import WebDriver

没有报错。就安装成了

4、手机自动化测试环境部署_夜神模拟器安装及验证

安装夜神模拟器,国内最流行的模拟器。

nox_setup_v7.0.1.6_full.exe

双击安装。

点击立即安装

点击安装完成,它还要一个重新启动的过程。一定要保证在联网环境下,因为它还要下载一些他自己的组件库之类的。

出现了很多菜单之后,说明已经完成了

5、手机自动化测试环境验证

将乐飞知识库拖到夜神模拟器里面去。进行自动的安装。

j

安装后双击,允许。允许。不允许我们什么都做不了。

里面有个开发配置

将配置放进去。        

网址https://lefeiwisdom-3pt-2t6a7-www.vip.51env.net地址

点击确定

手机号码输入后,13800138001 密码随便输入。勾选同意,点击登录。

打开使用协议,往下拉一下,再回去。

这个时候,我们怎么知道apk安装好了呢。要看一下设备号。

cmd 进入命令行,输入adb devices,回车。

遇见问题,版本不匹配。

在我们的夜神下面和SDK的路径下面,都有adb.exe,这两个不一致。可能都会导致有问题。

可以把夜神模拟器的adb.exe,复制到SDK路径下,覆盖掉原来的adb.exe。可以把SDK下的adb.exe先改一个名字。

此时没有冲突了

把cmd命令行关了,将APP退出,重新读一下。

再双击运行app

再查看还是没有设备号,应该怎么办呢。

点击工具--设置

最下面的版本说明,双击进去

版本号这里再去单击。

直到进入到开发者模式。

可能我们不是开发者模式打开的状态,所以软件访问模拟器时,它有可能不让我们连。

要重启一下模拟器

重启模拟器之后,开发者模式才能生效。

此时再用命令行查看,可以看到设备号。

可以用adb 命令连接模拟器

adb  connect 127.0.0.1:62001

其他模拟器:雷神5555  夜神62001  mumu7555  逍遥

查看连接的设备

查看设备名称  adb devices

查看包名,必须保证app已经启动在登录界面或已进入。注意最后的Activity有的有有的没有,要找开发人员问一下。

adb shell dumpsys activity activities |findstr mFocusedActivity

写一个脚本

#*****************************************
#v1.0:app独立自动化测试 脚本--初始化登录
#*****************************************
#导入类库
from appium.webdriver.webdriver import WebDriver
#手机参数初始化
#查询程序包名的命令:adb shell dumpsys activity activities| findstr mFocusedActivity#设置appPackage:被测程序包名caps={'platformName':'Android',               #设置platformName:手机系统名称Android'platformVersion':'7.1.2',              # #设置platformVersion:手机系统版本'deviceName':'127.0.0.1:52001' ,        #设置deviceName:设备名称'appPackage':'uni.UNI765428A',          #设置appPackage:被测程序包名'appActivity':'io.dcloud.PandoraEntry'  #设置appActivity:被测程序活动名
}#启动appium
WebDriver('http://127.0.0.1:4723/wd/hub',caps)

若遇见问题:appium:AttributeError: ‘NoneType‘ object has no attribute ‘to_capabilities‘错误

上述问题是因为各位在用pip install Appium-Python-Client命令行安装时系统会默认直接下载最新版本的Appium-Python-Client和appium框架包版本,因而系统默认也匹配下载最新版的selenium安装包版本,解决以上问题只需降低Appium-Python-Client版本即可,建议降到2.0。

pip uninstall Appium-Python-Client
pip install Appium-Python-Client==2.0

        安装好低版本的Appium-Python-Client重启一下pycharm即可。

可以看到程序打开过程是正确的。

这时需要用inspector定位。

6、安装inspector

下面是安装教程

Appium-Inspector-windows-2022.8.1.exe

选择安装

选择完成

打开后,有4个地方要修改

JSON里面单引号改为双引号,并点击保存

没有语法错误就会在左侧展示

可以保存起来

里面就会展示出来了

检查 正确的话,先把aapium要打开,模拟器也要打开,再点击start session

此时可以看到,已经读出来了

原始框架和混合框架,这里我们选择混合的。

选择元素定位,定位到该元素

出现这个问题的原因是appium版本太低,定位不到元素,建议换成更高版本。Appium-windows-1.21.0-1.exe

可以把id拷出来

com.android.packageinstaller:id/permission_allow_button

看在脚本中能否实现。

#启动appium
driver=WebDriver('http://127.0.0.1:4723/wd/hub',caps)
#进行元素定位
#点击允许按钮
time.sleep(2)
driver.find_element(By.ID,'com.android.packageinstaller:id/permission_allow_button').click()

先把inspector关掉,因为它会占用模拟器,模拟器退回初始化界面。

然后脚本运行。可以看到这个按钮是点掉的,它又出来了另外的一个框。

#*****************************************
#v1.0:app独立自动化测试 脚本--初始化登录
#*****************************************
#导入类库
import timefrom appium.webdriver.webdriver import WebDriver
from appium.webdriver.webdriver import By
#手机参数初始化
#查询程序包名的命令:adb shell dumpsys activity activities| findstr mFocusedActivity#设置appPackage:被测程序包名caps={'platformName':'Android',               #设置platformName:手机系统名称Android'platformVersion':'7.1.2',              # #设置platformVersion:手机系统版本'deviceName':'127.0.0.1:52001' ,        #设置deviceName:设备名称'appPackage':'uni.UNI765428A',          #设置appPackage:被测程序包名'appActivity':'io.dcloud.PandoraEntry'  #设置appActivity:被测程序活动名
}#启动appium
driver=WebDriver('http://127.0.0.1:4723/wd/hub',caps)
#进行元素定位
#点击允许按钮
time.sleep(2)
driver.find_element(By.ID,'com.android.packageinstaller:id/permission_allow_button').click()
#允许电话管理
time.sleep(2)
driver.find_element(By.ID,'com.android.packageinstaller:id/permission_allow_button').click()
#输入后台服务器地址
time.sleep(5)
xpath_service='/hierarchy/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.view.ViewGroup/android.widget.FrameLayout[2]/android.widget.LinearLayout/android.webkit.WebView/android.webkit.WebView/android.view.View[1]/android.view.View/android.widget.EditText'
servicepath='https://lefeiwisdom-3pt-2t6a7-www.vip.51env.net'
driver.find_element(By.XPATH,xpath_service).clear()
time.sleep(1)
driver.find_element(By.XPATH,xpath_service).send_keys(servicepath)
#点击确定按钮
time.sleep(3)
xpath_ok="/hierarchy/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.view.ViewGroup/android.widget.FrameLayout[2]/android.widget.LinearLayout/android.webkit.WebView/android.webkit.WebView/android.view.View[2]"
driver.find_element(By.XPATH,xpath_ok).click()
#点击验证码登录按钮
time.sleep(4)
xpath_check='/hierarchy/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.view.ViewGroup/android.widget.FrameLayout/android.widget.LinearLayout/android.webkit.WebView/android.webkit.WebView/android.view.View[4]'
driver.find_element(By.XPATH,xpath_check).click()
time.sleep(2)
#输入手机号码
xpath_phone='/hierarchy/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.view.ViewGroup[2]/android.widget.FrameLayout/android.widget.LinearLayout/android.webkit.WebView/android.webkit.WebView/android.view.View[5]/android.view.View/android.widget.EditText'
# id_phone='c52abd0b-3c7b-4b6f-a2a0-f386d56bebd8'
driver.find_element(By.XPATH,xpath_phone).send_keys('13800138001')
time.sleep(2)
#输入验证码
xpath_checkcode='/hierarchy/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.view.ViewGroup[2]/android.widget.FrameLayout/android.widget.LinearLayout/android.webkit.WebView/android.webkit.WebView/android.view.View[6]/android.view.View/android.widget.EditText'
driver.find_element(By.XPATH,xpath_checkcode).send_keys('111111')
#接受协议
xpath_allow='/hierarchy/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.view.ViewGroup[2]/android.widget.FrameLayout/android.widget.LinearLayout/android.webkit.WebView/android.webkit.WebView/android.view.View[9]'
time.sleep(2)
driver.find_element(By.XPATH,xpath_allow).click()
#登录按钮
time.sleep(2)
xpath_login='/hierarchy/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.view.ViewGroup[2]/android.widget.FrameLayout/android.widget.LinearLayout/android.webkit.WebView/android.webkit.WebView/android.view.View[8]'
driver.find_element(By.XPATH,xpath_login).click()

有时id定位是可以用的,有时只能用xpath,推荐使用xpath.

 Appium Inspector定位工具界面介绍:

1、Selecte Elements:根据元素定位;用来识别元素

2、Swipe By Coordinates:根据坐标滑动页面;如果inspector界面没有展示全部,可以通过上滑展示到底部

3、Tap By Coordinates:根据坐标点击操作;inspector界面点击某个元素,可以跳转到该元素的界面,且app同步跳转

4、原生模式

5、混合模式,支持混合框架的元素定位

6、Back:返回

7、Refresh Source & Screenshot:刷新界面与截图

8、Start Recording:录制按钮,能自动生成自动化脚本

9、Search for element:在App Source中搜索元素

10、Quit Session & Close Inspector:退出会话或结束

11、ource:源代码显示区域

12、Actions:

13、Selected Element:被选中元素信息显示

Selected Element: 选中的元素对应的属性信息,这个就是我们查找定位元素的关键信息

index:索引

text:文本

class:类

package:包

content-desc:内容描述

checkable:可选

checked:选中

enabled:可用

focusable:可获得焦点

focused:获得焦点

scrollable:可滚动

long-clickable:可长点击

password:隐藏明文(密文显示)

selected:选中

bounds:界面(起始点坐标/终止点坐标)

resource-id:元素ID

Appium Inspector录制功能:

1、 点击 Start Recording 开启录制

2、点击 Selecte Elements 元素定位

3、选中 操作元素 

4、 在Selected Element界面,点击tap(Tap-点击、Send Keys-写入值、Clear-清空)

5、在 Recorder 下可选择生成代码的语言,并展示在下方空白处 

相关文章:

  • 【工具类】证书自动续签免费版 正式发布
  • fiddler抓包07_抓IOS手机请求
  • Pinia从安装到使用
  • Metasploit渗透测试之服务端漏洞利用
  • 在vue2项目中使用dart-sass
  • 【JavaEE】——内存可见性问题
  • 基于keras 的神经网络股价预测模型
  • 基于springboot+vue医院挂号就诊系统设计与实现
  • C#和数据库高级:虚方法
  • android 页面布局(1)
  • 章管家 listUploadIntelligent.htm SQL注入漏洞
  • matlab r2024a、matlab R2024b保姆级安装教程
  • 语音识别(非实时)
  • Python编程:08- pycharm使用技巧
  • NLP 序列标注任务核心梳理
  • [译]Python中的类属性与实例属性的区别
  • 【跃迁之路】【641天】程序员高效学习方法论探索系列(实验阶段398-2018.11.14)...
  • 2017 年终总结 —— 在路上
  • Brief introduction of how to 'Call, Apply and Bind'
  • ES6核心特性
  • Python 使用 Tornado 框架实现 WebHook 自动部署 Git 项目
  • Vue2 SSR 的优化之旅
  • webpack4 一点通
  • weex踩坑之旅第一弹 ~ 搭建具有入口文件的weex脚手架
  • WePY 在小程序性能调优上做出的探究
  • 分布式事物理论与实践
  • 高性能JavaScript阅读简记(三)
  • 将 Measurements 和 Units 应用到物理学
  • 数据科学 第 3 章 11 字符串处理
  • 王永庆:技术创新改变教育未来
  • 源码之下无秘密 ── 做最好的 Netty 源码分析教程
  • 进程与线程(三)——进程/线程间通信
  • ​​​​​​​STM32通过SPI硬件读写W25Q64
  • #define、const、typedef的差别
  • (1)svelte 教程:hello world
  • (DenseNet)Densely Connected Convolutional Networks--Gao Huang
  • (TipsTricks)用客户端模板精简JavaScript代码
  • (zt)基于Facebook和Flash平台的应用架构解析
  • (翻译)Quartz官方教程——第一课:Quartz入门
  • (非本人原创)我们工作到底是为了什么?​——HP大中华区总裁孙振耀退休感言(r4笔记第60天)...
  • (附源码)ssm跨平台教学系统 毕业设计 280843
  • (南京观海微电子)——I3C协议介绍
  • (提供数据集下载)基于大语言模型LangChain与ChatGLM3-6B本地知识库调优:数据集优化、参数调整、Prompt提示词优化实战
  • (转)拼包函数及网络封包的异常处理(含代码)
  • .NET Core日志内容详解,详解不同日志级别的区别和有关日志记录的实用工具和第三方库详解与示例
  • .NET Core中Emit的使用
  • .NET/C# 利用 Walterlv.WeakEvents 高性能地中转一个自定义的弱事件(可让任意 CLR 事件成为弱事件)
  • .NET设计模式(7):创建型模式专题总结(Creational Pattern)
  • .NET业务框架的构建
  • @Autowired 与@Resource的区别
  • @Autowired和@Resource装配
  • @vue/cli 3.x+引入jQuery
  • [ 第一章] JavaScript 简史
  • [ 网络通信基础 ]——网络的传输介质(双绞线,光纤,标准,线序)
  • [ACTF2020 新生赛]Include