appium自动化 - android
1. 获取driver
appium通过生成driver来识别和操作app的UI元素。生成driver时,需要给出被测设备的相关信息。appium官方上的例子如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 | public static AndroidDriver<?> mobiledriver; @BeforeTest public void beforeTest( ) throws MalformedURLException { DesiredCapabilities capabilities = new DesiredCapabilities(); capabilities.setCapability(MobileCapabilityType.APPIUM_VERSION, "1.7.2" ); capabilities.setCapability(MobileCapabilityType.PLATFORM_VERSION, "4.4" ); capabilities.setCapability(MobileCapabilityType.PLATFORM_NAME, "Android" ); capabilities.setCapability(MobileCapabilityType.AUTOMATION_NAME, "Appium" ); capabilities.setCapability(MobileCapabilityType.DEVICE_NAME, "Android Emulator" ); capabilities.setCapability(MobileCapabilityType.BROWSER_NAME, "Browser" ); capabilities.setCapability( "newCommandTimeout" , 2000 ); mobiledriver = new AndroidDriver<>( new URL( "http://127.0.0.1:4723/wd/hub" ), capabilities); } |
Android 第三方被测app举例:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | public static AndroidDriver<?> driver1; public static void main(String[] args) { //set up Appium DesiredCapabilities capabilities1 = new DesiredCapabilities(); capabilities1.setCapability(MobileCapabilityType.AUTOMATION_NAME, "uiautomator2" ); capabilities1.setCapability(MobileCapabilityType.PLATFORM_NAME, "Android" ); capabilities1.setCapability(MobileCapabilityType.PLATFORM_VERSION, "9.0.0" ); capabilities1.setCapability(MobileCapabilityType.DEVICE_NAME, "PCT-AL10" ); capabilities1.setCapability(MobileCapabilityType.UDID, "xxxx" ); capabilities1.setCapability( "appPackage" , "com.xxxx.xxx.demo" ); capabilities1.setCapability( "appActivity" , ".MainActivity" ); //for input Chinese capabilities1.setCapability( "unicodeKeyboard" , true ); capabilities1.setCapability( "resetKeyboard" , true ); try { driver1 = new AndroidDriver<>( new URL( "http://127.0.0.1:4723/wd/hub" ), capabilities1); } catch (MalformedURLException e) { // TODO Auto-generated catch block e.printStackTrace(); }<br> } |
如何获取以上信息呢?
- MobileCapabilityType.APPIUM_VERSION: appium服务器的版本。可通过命令行appium -version 或 安装的appium server客户端查看。
- MobileCapabilityType.PLATFORM_VERSION: 操作系统版本。Android可通过命令行 adb -s xxxx(欲连接的deviceID) shell getprop ro.build.version.release来查看。
- MobileCapabilityType.PLATFORM_NAME: Android 或 iOS。
- MobileCapabilityType.DEVICE_NAME: 被测设备名。Android可通过命令 adb -s xxxx shell getprop ro.product.model 查看。
- appPackage: 被测app包名。Android可通过命令 adb shell pm list packages | grep xxxx来查看。
- appActivity: 被测app activity名。可通过sdk里带的uiautomatorviewer查看。
- MobileCapabilityType.UDID: 被测设备id。Android可通过命令 adb devices获得。
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core内存结构体系(Windows环境)底层原理浅谈
· C# 深度学习:对抗生成网络(GAN)训练头像生成模型
· .NET 适配 HarmonyOS 进展
· .NET 进程 stackoverflow异常后,还可以接收 TCP 连接请求吗?
· SQL Server统计信息更新会被阻塞或引起会话阻塞吗?
· 传国玉玺易主,ai.com竟然跳转到国产AI
· 本地部署 DeepSeek:小白也能轻松搞定!
· 自己如何在本地电脑从零搭建DeepSeek!手把手教学,快来看看! (建议收藏)
· 我们是如何解决abp身上的几个痛点
· 普通人也能轻松掌握的20个DeepSeek高频提示词(2025版)
2013-12-23 rails中的语法
2013-12-23 【转】牛逼闪闪的Ruby迭代器