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

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


↙↙↙阅读原文可查看相关链接,并与作者交流