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

news2024/9/24 13:54:21

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.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2160518.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

nc检查网络连通性测试和端口扫描

nc可以作为server端启动一个tcp的监听(注意,此处重点是起tcp,下面还会讲udp) 先关闭A的防火墙,或者放行下面端口,然后测试B机器是否可以访问A机器启动的端口 在A机器上启动一个端口监听,比如 …

链接器查找其他动态库的过程

export LD_DEBUGall 2./your_program 这将输出所有的调试信息,包括搜索路径、库的加载、符号解析等详细信息。 关闭用unset LD_DEBUG 常用的 LD_DEBUG 选项包括: all: 输出所有调试信息。paths: 显示搜索路径信息。files: 显示文件打开和关闭的信息。…

气膜建筑的维护与维修:延长使用寿命的关键—轻空间

气膜建筑以其快速搭建、低成本和灵活的空间设计,被广泛应用于体育馆、仓储设施等多个领域。然而,随着时间的推移,气膜建筑的结构和材料在使用过程中不可避免地受到环境和使用条件的影响,因此定期维护和必要的维修显得尤为重要。了…

杰理ac695x配置小度id

#define DMA_PRODUCT_INFO_TEST 1 仅限于调试阶段,批量烧录阶段需要关闭

C++11语法(基础)【一】

目录 1. C11简介 2. 统一的列表初始化 2.1 {}初始化 2.2 std::initializer_list 3. 声明 3.1 auto 3.2 decltype 3.3 nullptr 声明:C11我会分几篇来讲,每一篇我都会讲几种特性。 1. C11简介 在2003年C标准委员会曾经提交了一份技术…

SOMEIP_ETS_128: SD_Multicast_FindService_Major_Minor_Version_set_to_all

测试目的: 验证DUT能够对设置了主版本号和次版本号为0xFF的多播FindService请求做出响应,并为每个请求至少回复一个单播OfferService消息。 描述 本测试用例旨在确保DUT能够正确处理多播FindService请求,特别是当请求中的主版本号和次版本…

【AIGC】ChatGPT提示词助力广告文案、PPT制作与书籍推荐的高效新模式

博客主页: [小ᶻZ࿆] 本文专栏: AIGC | ChatGPT 文章目录 💯前言💯高效广告推销文案提示词使用方法 💯AI自动生成PPT全流程提示词使用方法 💯精选书籍推荐爆款文案提示词使用方法 💯小结 💯…

vulnhub(13):Digitalworld.local JOY(ftp 的未授权文件读写漏洞、文件覆盖提权)

端口 nmap主机发现 nmap -sn 192.168.72.0/24 ​ Nmap scan report for 192.168.72.171 Host is up (0.00020s latency). ​ 171是新出现的机器,他就是靶机 nmap端口扫描 nmap -Pn 192.168.72.171 -p- --min-rate 10000 -oA nmap/scan 扫描开放端口保存到 nmap/sca…

【Android】 IconFont的使用

SVG 的特点: 矢量图形:SVG 使用基于路径的矢量图形,这意味着图形可以无限放大而不失真,非常适合需要多种分辨率的应用。 可伸缩性:SVG 文件的大小通常比位图小,这使得它们在网页上加载更快。 编辑和创作&…

【STM32 ST-LINK Utility】工具使用和如何编译HEX和BIN文件

【STM32 ST-LINK Utility】工具使用和如何编译HEX和BIN文件 一、STM32 ST-LINK UtilitySTM32 ST-LINK Utility简介功能概述: STM32 ST-LINK Utility作用使用场景: 二、KEIL生成HEX和BIN文件1. 生成HEX文件2. 生成BIN文件 三、STM32 ST-LINK Utility烧录1…

【linux经典工具】strace-就十分钟你也能成为性能调优专家

strace 是什么 strace是一款功能强大的 Linux 进程监控和诊断工具。主要作用就是:用于调试程序、解决问题、拦截和记录系统调用以及跟踪正在运行的进程。它能输出了程序如何与系统交互的过程,尤其是在无法获取源代码的情况下(那些开源工具、…

学习threejs,绘制任意字体模型

👨‍⚕️ 主页: gis分享者 👨‍⚕️ 感谢各位大佬 点赞👍 收藏⭐ 留言📝 加关注✅! 👨‍⚕️ 收录于专栏:threejs gis工程师 文章目录 一、🍀前言二、🍀绘制任意字体模型…

前端开发之装饰器模式

介绍 装饰器模式 是在不修改对象内部结构的情况下,动态地给对象添加功能的一种设计模式。在软件开发中,有时候我们需要为已有对象添加一些额外的行为,但不希望修改该对象的代码,装饰器模式可以很好的满足这一需求。 在TypeScrip…

面向AI的数据治理市场前景如何?

面向AI的数据治理市场前景如何? 前言面向AI的数据治理 前言 在这个数字化飞速发展的时代,数据已经成为了我们生活和工作中不可或缺的一部分。就像一把双刃剑,既能为我们带来巨大的机遇,也可能带来一些挑战。而数据治理&#xff0…

[spring]springboot日志

文章目录 一. 日志的用途二. 打印日志三. 日志框架门面模式(外观模式)SLF4J框架介绍 四. 日志格式日志级别配置日志级别日志持久化配置日志文件分割配置日志格式 五. 更简单的日志输出 一. 日志的用途 二. 打印日志 得到日志对象: 需要使用日志工厂LoggerFactory RestControl…

统信服务器操作系统【qcow2 镜像空间扩容】方案

使用 qcow2 镜像安装系统,当默认安装系统存储空间不够用时,进行自定义扩容 文章目录 准备环境扩容步骤一、检查环境信息1.查看镜像信息2.查看镜像分区信息3.确认需要扩容的分区名二、扩容1.备份镜像2.创建新的镜像文件,并指定空间3.将系统扩容到新的镜像三、扩容 lvm 分区四…

OpenCV目标检测(1)模板匹配函数matchTemplate()的使用

操作系统:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 编程语言:C11 算法描述 将一个模板与重叠的图像区域进行比较。 该函数在图像中滑动,使用指定的方法将大小为 w h w \times h wh的重叠块与模板 templ 进行…

安全运维教程(非常详细)从零基础入门到精通,看完这一篇就够了_网络运维手册

一、安全运维-网络 1、IP地址相关 IP地址属于网络层地址,用于标识网络中的节点设备。 IP地址由32bit构成,每8bit一组,共占用4个字节。 IP地址由两部分组成,网络位和主机位。 IP地址分类: 类别网络位子网掩码私有地…

基于单片机的智能校园照明系统

由于校园用电量较大,本设计可以根据实际环境情况的改变,实现实时照明的控制。本设计以单片机芯片为控制芯片,热释电传感器采集教室中学生出入的信息,并把信息传递给单片机芯片,单片机芯片根据传感器传递过来的信息来控…

004_动手实现MLP(pytorch)

import torch from torch import nn from torch.nn import init import numpy as np import sys import d2lzh_pytorch as d2l # 1.数据预处理 mnist_train torchvision.datasets.FashionMNIST(root/Users/w/PycharmProjects/DeepLearning_with_LiMu/datasets/FashionMnist, t…