python+appium自动化测试之如何控制App的启动和退出

作者:蜗牛Tin 时间:2023-06-24 12:45:01 

由于本人使用的是Android设备做自动化测试,所以以下内容均基于Android系统做出的整理

一、启动app

启动app需要设置Capability参数,而Capability参数放在Desired Capalibity中,Desired Capalibity告诉Appium想要的自动化平台和应用程序,这是一组键值对,主要是用于通知Appium服务器建立需要的session

设置Capability的公共部分

platformName     自动化测试手机的操作系统(Android/iOS)
platformVersion  手机对应的版本(Android 10)
deviceName       连接的设备名(模拟器或真机)

设置Capability 的Android部分

appActivity 通过APK包获取,获取方式在下方有说明

appPackage 通过APK包获取包名,获取方式在下方有说明

Android完整案例:

def start(self):
       caps = {"platformName": "Android",
               "deviceName": "U4AIUKFAL7W4MJLR",
               "platforVersion": "9",
               "appPackage": "com.sina.weibo",
               "appActivity": "com.sina.weibo.SplashActivity",
               "autoGrantPermissions": "true",
               "automationName": "UiAutomator2"
               }

self.driver = webdriver.Remote("http://localhost:4723/wd/hub", caps)

1.plateforName的作用?

操作系统,例如:Android、iOS、FirefoxOS

2.deviceName的作用是什么?(获取设备名的方式在下面内容)

设备名,连接的设备名(真机或模拟器)

3.platforVersion的作用是什么?

操作系统版本,对应连接的模拟器或手机的系统版本

4.appActivity和appPackage的作用是什么?(获取的方式在下面内容)

使Appium确切知道应为您的应用程序启动哪个程序包和活动。否则,Appium会尝试从您的应用清单中自动确定这些内容。

5.autoGrantPermissions的作用是什么?

让appium自动授权app权限,如果noReset为True,则该条不生效(该参数为Android独有),对应的值为True或False

6.automationName的作用是什么?

使用引擎,默认为Appium,其中Appium、UiAutomator2、Selendroid、Espresso用于Android,XCUITest用于iOS

7.webdriver.Remote("http://localhost:4723/wd/hub", caps)的作用是什么?

webdriver.Remote实际上就是原生webdriver的子类,另外Remote()构造函数的第一个参数中需要显示指定appium server监听的端口

二、退出App

def teardown(self):
driver.quit()

三、appium实现原理

客户端(即PC端)通过4723端口,向服务端(server)发送代码请求,服务端与移动端(设备:手机或模拟器)通过4724端口进行通信,当服务端接收到请求后,移动端的Bootstrap.jar包,将命令传送给Uiautomator执行点击、滑动的操作。

Bootstrap的作用:启动socket通信,监听4724端口

如下图所示:

python+appium自动化测试之如何控制App的启动和退出

appium只是一个框架,调用的自动化框架是Android或iOS本身的框架,默认端口号是4723,本地的IP地址是:http://127.0.0.1,或http://locahost

四、如何获取deviceName?

移动端在“手机->设置->开发者选项”中打开USB调试,PC端按下【Windows+R】,输入cmd,运行cmd,输入adb devices,如下图所示:

python+appium自动化测试之如何控制App的启动和退出

图中的device前面的参数即表示设备名:U4AIUKFAL7W4MJR

五、如何获取apk的appActivity和appPackage?

1、在Android SDK的文件夹下找到aapt.exe应用程序,在"D:\Android\SDK\build-tools\30.0.1"路径下,如下图所示:

python+appium自动化测试之如何控制App的启动和退出

2、按下【Windows+R】,输入cmd,运行cmd ,进入该盘,再进入appt.exe所在的文件夹,输入的内容为:“cd D:\Android\SDK\build-tools\30.0.1”,则可以进入该文件夹,进入文件夹后输入“aapt dump badging apk所在的路径+apk名字”,如下图所示即为成功,下图所示为获取到的app的appPackage

python+appium自动化测试之如何控制App的启动和退出

下图所示为获取到的app的appActivity

python+appium自动化测试之如何控制App的启动和退出

来源:https://www.cnblogs.com/TinHuang/p/15539544.html

标签:python,appium,App
0
投稿

猜你喜欢

  • python字符串替换的2种方法

    2022-12-27 20:59:24
  • SQL Server中的逻辑函数介绍

    2024-01-20 06:20:37
  • YOLOv5改进之添加CBAM注意力机制的方法

    2023-07-22 20:48:52
  • ASP技术访问WEB数据库

    2023-07-11 22:50:09
  • 浅谈tensorflow语义分割api的使用(deeplab训练cityscapes)

    2022-03-16 23:24:01
  • Python安装第三方库的3种方法

    2022-02-03 03:10:47
  • js实现rem自动匹配计算font-size的示例

    2023-08-22 11:02:33
  • asp如何正确显示数据库里同时存在的GB码和BIG5编码?

    2010-06-28 18:26:00
  • 详细讲解SQL Server数据库的文件恢复技术

    2009-01-15 12:54:00
  • asp添加数据实现代码

    2011-02-05 10:42:00
  • Tensorflow2.4使用Tuner选择模型最佳超参详解

    2023-07-19 19:46:22
  • Python通过dxfgrabber库实现获取CAD信息

    2021-02-26 00:18:49
  • Python MySQLdb 执行sql语句时的参数传递方式

    2024-01-28 08:45:33
  • python各类经纬度转换的实例代码

    2023-12-24 12:19:58
  • Python之Pygame的Draw绘图

    2022-11-29 18:51:18
  • python mysql中in参数化说明

    2024-01-13 08:38:02
  • Anaconda安装pytorch和paddle的方法步骤

    2021-04-17 18:21:59
  • 对Pycharm创建py文件时自定义头部模板的方法详解

    2022-06-05 15:24:06
  • nodejs检测因特网是否断开的解决方案

    2024-05-13 10:04:25
  • jQuery实现同一点击,两个不同链接,指向两个不同的iframe

    2010-06-21 10:52:00
  • asp之家 网络编程 m.aspxhome.com