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

Tin · 2021年01月30日 · 2682 次阅读

由于本人使用的是 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 端口

如下图所示:

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

四、如何获取 deviceName?

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

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

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

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

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

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

以上内容有错误的地方,大家多多指正,谢谢!

共收到 0 条回复 时间 点赞
需要 登录 后方可回复, 如果你还没有账号请点击这里 注册