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

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 time

from 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 下可选择生成代码的语言,并展示在下方空白处 


http://www.kler.cn/news/319252.html

相关文章:

  • TypeScript系列:第四篇 - typeof 与 keyof
  • 微信小程序06-综合项目点餐系统
  • 京准电钟:NTP网络校时服务器助力校园体育场馆
  • MySQL 8.0 与 8.4 主主同步
  • E+H超声波物位仪FMU42-ATB2A22A
  • 企业内训|华为昇腾智算中心深度技术研修-某智算厂商研发中心
  • mysql RR是否会导致幻读?
  • [Redis][事务]详细讲解
  • 激光粉尘传感器:筑牢粮仓安全防线,有效应对粮食粉尘爆炸高危风险
  • 为什么一定要学AI(Stable Diffusion)做设计? 会用AI和不会用AI的区别真的太大了!打工人一定要看!
  • SQL中的WITH AS语法
  • Java项目中异常处理的最佳实践
  • nginx+keepalived健康检查案例详解(解决nginx出现故障却不能快速切换到备份服务器的问题)
  • 【Java特性】多态详解——对象类型转换与 instanceof 关键字的运用
  • python使用vscode 所需插件
  • VCS和Verdi联合仿真使用学习记录
  • 哪里有同等学力申硕英语历年真题答案
  • 计算机知识科普问答--17(81-85)
  • pg入门5—pg有哪些系统schema
  • git add成功后忘记commit的文件丢了?
  • Linux、Windows、Android下查看可执行文件、动态库和静态库信息的命令
  • 数据结构|二叉搜索树
  • ProgrammerAI—AI辅助编程学习指南
  • 前端实现将二进制文件流,并下载为excel文件
  • HarmonyOS鸿蒙开发实战(5.0)自定义全局弹窗实践
  • 缓存技术的核心价值与应用
  • android studio 批量修改包名 app package name
  • 技术周总结 09.16~09.22 周日(架构 C# 数据库)
  • 基于Java,SpringBoot和Vue的仓库管理商品管理电商后台管理系统
  • 交换机和路由器的区别