APP自动化测试(2)-通过appium打开手机的应用

这篇具有很好参考价值的文章主要介绍了APP自动化测试(2)-通过appium打开手机的应用。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

一、appium的Capabilities配置及Appium Inspector安装

1.1安装Appium Inspector

1.2Capabilities配置

二、获取手机以及app的信息

2.1获取连接设计的配置名称

2.1.1连接手机

2.1.2获取设备名称

 2.2利用adb获取日志找到appPackage和appActivity 

 三、Start Session

3.1 安装appium-doctor

3.2解决appium-doctor查出的关键警告

3.3解决Start Sesion 失败的步骤


一、appium的Capabilities配置及Appium Inspector安装

在上篇文章中我们安装了appium、python、Android SDK、vscode等软件,现在我们开始下一步,让appium连上手机的应用

1.1安装Appium Inspector

双击打开Appium Server GUI,出现如下页面,用默认的IP和端口启动服务,点击startServer

APP自动化测试(2)-通过appium打开手机的应用

出现如下页面,然后点击这个搜索按钮配置Capabilities并启动

APP自动化测试(2)-通过appium打开手机的应用

可是发现进入了github的页面,没有出现预料的配置和启动页面

 实际出现的这个页面

APP自动化测试(2)-通过appium打开手机的应用

而不是如下这个页面

APP自动化测试(2)-通过appium打开手机的应用

查了一下原因,是因为我们的appium-deskop版本是V1.22,而appium-Inspector不再默认集成在appium-deskop了,需要单独安装。

既然已经到了git的appium-Inspector页面,那我们在下面找到Release链接

APP自动化测试(2)-通过appium打开手机的应用

进入Release包下载页面,选择我们需要的Windows安装包,下载安装。

APP自动化测试(2)-通过appium打开手机的应用

安装后出现了Appium Inspector的应用,双击后出现了久违的页面,如下

APP自动化测试(2)-通过appium打开手机的应用

 Host和端口用默认的,刚好能跟appium-server的对应上,Remote Path要改成/wd/hub

1.2Capabilities配置

Capabilities是appium连接的一组配置,配置正确才能正常连接到手机和要测试的应用,主要配置如下

配置名 含义 参考值
platformName 平台名称,我们是安卓的系统所以填 Android Android
platfformVersion 平台版本,这个是安装系统的版本,我们连真实手机,在手机的设置、关于手机里面可以查到Android版本号,我们的版本号是11 11
deviceName 设备名称,如何获取我们在下一章说 OFYDHUCIPN8PHEBI
appPackage APP 的包名;这里我们使用的随手记,如何获取app的包名我们在下一章会讲一个简单的方法 com.mymoney
appActivity  启动的界面的名字,如何获取也再下一章中讲道

com.mymoney.biz.main.v12.MainActivityV12

APP自动化测试(2)-通过appium打开手机的应用

二、获取手机以及app的信息

2.1获取连接设计的配置名称

2.1.1连接手机

首先我们得用USB线连接手机和电脑,而且手机要打开开发者模式

  • 打开开发模式

首先打开开发者模式,在手机点击设置->关于手机->版本信息

连续点击版本号5次,就可以打开开发者模式

  • USB连接手机和电脑

USB线一般要用原装USB充电线才行,买的有的线只支持,用USB线连接电脑和手机,插上线的时候手机USB用于选择 传输文件/Androin Auto

这样手机连上了

2.1.2获取设备名称

在上一篇中我们已经安装好了Android SDK,并且安装了Android ADK Platform-tools,现在就要用到它了

  • 在命令行输入 adb devices -l,就列出连接设备的详细信息,其中第一个就是我们要的deviceName,如果adb命令出不来或提示非内部或外部命令,则是Android SDK没安装正确或者没有正确配置环境变量,解决方法见《APP自动化测试(1)-工具安装》的Android SDK安装。如果输入如下命令没有设备信息,那么应该是手机连接问题,确认开发者模式是否打开,连接的USB线是否支持数据传输

APP自动化测试(2)-通过appium打开手机的应用

 2.2利用adb获取appPackage和appActivity 

2.2.1利用日志找到appPackage和appActivity 

网上有一些方法可以找到appPackage和appActivity,我们用其中一个简单的方法

  • 首先在命令行输入如下命令,将adb的日志重定向到文件
adb logcat > d:\log.log
  • 在手机上打开需要操作的应用,我们打开随手记
  • 在命令行Ctrl+C停止日志重定向
  • 打开d:\log.log文件
  • 搜索关键字 “Focus entered window”,如下图前面的com.mymoney就是appPackage,斜杠后面的com.mymoney.biz.main.v12.MainActivityV12就是appActivity 

APP自动化测试(2)-通过appium打开手机的应用

2.2.2利用adb shell命令

1、打开手机中app的页面

2、在命令行输入如下命令

adb shell
dumpsys activity|grep mFocusedActivity

如果没内容,那么用如下这条命令

dumpsys activity|grep  mFocusedWindow

如下图斜杠前面的是appPackage,斜杠后面的就是appActivity

APP自动化测试(2)-通过appium打开手机的应用

 

 三、Start Session

都配置后,启动Start Session,然后弹出如下窗口,提示如下错误,想办法解决吧,查了下有说要打开开发者模式如下三个选项的

Error
Failed to create session. An unknown server-side error occurred while processing the command. Original error: Error executing adbExec. Original error: 'Command ''C:\\Program Files (x86)\\Androidandroid-sdk\\platform-tools\\adb.exe' -P 5037 -s OFYDHUCIPN8PHEBI shell 'settings delete global hidden_api_policy_pre_p_apps;settings delete global hidden_api_policy_p_apps;settings delete global hidden_api_policy'' exited with code 255'; Command output: Exception occurred while executing 'delete': java.lang.SecurityException: Permission denial: writing to settings requires:android.permission.WRITE_SECURE_SETTINGS at com.android.providers.settings.SettingsProvider.enforceWritePermission(SettingsProvider.java:2399) at com.android.providers.settings.SettingsProvider.mutateGlobalSetting(SettingsProvider.java:1428) at com.android.providers.settings.SettingsProvider.mutateGlobalSetting(SettingsProvider.java:1420) at com.android.providers.settings.SettingsProvider.deleteGlobalSetting(SettingsProvider.java:1391) at com.android.providers.settings.SettingsProvider.call(SettingsProvider.java:576) at android.content.ContentProvider.call(ContentProvider.java:2448) at android.content.ContentProvider$Transport.call(ContentProvider.java:517) at com.android.providers.settings.SettingsService$MyShellCommand.deleteForUser(SettingsService.java:399) at com.android.providers.settings.SettingsService$MyShellCommand.onCommand(SettingsService.java:281) at android.os.BasicShellCommandHandler.exec(BasicShellCommandHandler.java:98) at android.os.ShellCommand.exec(ShellCommand.java:44) at com.android.providers.settings.SettingsService.onShellCommand(SettingsService.java:49) at

APP自动化测试(2)-通过appium打开手机的应用

问题定位:

查了下有说要打开如下三个选项的,可我的手机只有一个USB调试,应该不是这个问题

APP自动化测试(2)-通过appium打开手机的应用

3.1 安装appium-doctor

那我们看看是不是appium安装有问题,装一个appium-doctor诊断一下,在命令行运行“npm install appium-doctor -g”进行安装,看图安装了253个包

APP自动化测试(2)-通过appium打开手机的应用

在命令行运行 appium-doctor,检查我们appium的安装情况

APP自动化测试(2)-通过appium打开手机的应用

3.2解决appium-doctor查出的关键警告

不看不知道,一看吓一跳,猜测关键错误应该是这几个

WARN AppiumDoctor  ✖ ANDROID_HOME environment variable is NOT set!
WARN AppiumDoctor  ✖ JAVA_HOME environment variable is NOT set!
WARN AppiumDoctor  ✖ adb, android, emulator, apkanalyzer.bat could not be found because ANDROID_HOME or ANDROID_SDK_ROOT is NOT set!
WARN AppiumDoctor  ✖ Cannot check %JAVA_HOME% requirements since the environment variable itself is not set

看来是环境变量没有配置ANDROID_HOME和JAVA_HOME,那我们配起来

 首先我们的Android SDK的目录是在C:\Program Files (x86)\Androidandroid-sdk,前面安装的时候直接把环境变量配置到了path配置项,看来还不行,需要建ANDROID_HOME和JAVA_HOME的环境变量,如下图所示,点新建,然后建两个环境变量

APP自动化测试(2)-通过appium打开手机的应用

 如果不知道java的安装目录,可以在命令行运行“java -verbose”,最后一行就是java的jdk安装目录了,将此目录配置问JAVA_HOME的路径

APP自动化测试(2)-通过appium打开手机的应用

关闭命令行再执行appium-doctor,发现这几个警告都已经解决

APP自动化测试(2)-通过appium打开手机的应用

可是有除了一条新的警告  ✖ apkanalyzer.bat could NOT be found in C:\Program Files (x86)\Androidandroid-sdk!

解决方法:

从Download Android Studio & App Tools - Android Developers 拉到下面找到Command line tools only,如下图,然后下载Windows的这个包

APP自动化测试(2)-通过appium打开手机的应用

解压后将如下的apkanalyzer.bat复制到C:\Program Files (x86)\Androidandroid-sdk\platform-tools目录,然后重启命令行窗口再运行appium-doctor, ✖ apkanalyzer.bat could NOT be found in C:\Program Files (x86)\Androidandroid-sdk!这条警告解决。

APP自动化测试(2)-通过appium打开手机的应用

3.3解决Start Sesion 失败的步骤

再次尝试启动Start Sesion,

还是报相同的错,如下图

Failed to create session. An unknown server-side error occurred while processing the command. Original error: Error executing adbExec. Original error: 'Command ''C:\\Program Files (x86)\\Androidandroid-sdk\\platform-tools\\adb.exe' -P 5037 -s OFYDHUCIPN8PHEBI shell 'settings delete global hidden_api_policy_pre_p_apps;settings delete global hidden_api_policy_p_apps;settings delete global hidden_api_policy'' exited with code 255'; Command output: Exception occurred while executing 'delete': java.lang.SecurityException: Permission denial: writing to settings requires:android.permission.WRITE_SECURE_SETTINGS at com.android.providers.settings.SettingsProvider.enforceWritePermission(SettingsProvider.java:2399) at com.android.providers.settings.SettingsProvider.mutateGlobalSetting(SettingsProvider.java:1428) at com.android.providers.settings.SettingsProvider.mutateGlobalSetting(SettingsProvider.java:1420) at com.android.providers.settings.SettingsProvider.deleteGlobalSetting(SettingsProvider.java:1391) at com.android.providers.settings.SettingsProvider.call(SettingsProvider.java:576) at android.content.ContentProvider.call(ContentProvider.java:2448) at android.content.ContentProvider$Transport.call(ContentProvider.java:517) at com.android.providers.settings.SettingsService$MyShellCommand.deleteForUser(SettingsService.java:399) at com.android.providers.settings.SettingsService$MyShellCommand.onCommand(SettingsService.java:281) at android.os.BasicShellCommandHandler.exec(BasicShellCommandHandler.java:98) at android.os.ShellCommand.exec(ShellCommand.java:44) at com.android.providers.settings.SettingsService.onShellCommand(SettingsService.java:49) at 

APP自动化测试(2)-通过appium打开手机的应用

看来路子不对,继续解决,找打如下一个解决方式,要在开发者选项中打开如下的禁止权限监控配置

APP自动化测试(2)-通过appium打开手机的应用

设置后然后再执行Start Session,此时现象不一样了,会在手机上弹出安装Appium Setting,同意安装次应用,满怀期待之情,结果又出现了如下错误

 Failed to create session. An unknown server-side error occurred while processing the command. Original error: Cannot verify the signature of 'C:\Users\86181\AppData\Local\Temp\2023010-7308-196bghn.o2bj\appium-uiautomator2-server-v4.27.0.apk'. Original error: Could not find 'apksigner.jar' in ["C:\\Program Files (x86)\\Androidandroid-sdk\\platform-tools\\platform-tools\\apksigner.jar","C:\\Program Files (x86)\\Androidandroid-sdk\\platform-tools\\emulator\\apksigner.jar","C:\\Program Files (x86)\\Androidandroid-sdk\\platform-tools\\cmdline-tools\\latest\\bin\\apksigner.jar","C:\\Program Files (x86)\\Androidandroid-sdk\\platform-tools\\tools\\apksigner.jar","C:\\Program Files (x86)\\Androidandroid-sdk\\platform-tools\\tools\\bin\\apksigner.jar","C:\\Program Files (x86)\\Androidandroid-sdk\\platform-tools\\apksigner.jar"]. Do you have Android Build Tools installed at 'C:\Program Files (x86)\Androidandroid-sdk\platform-tools'?

APP自动化测试(2)-通过appium打开手机的应用

 总算有些进展了,出现了不同的错误,关键信息Could not find 'apksigner.jar' in ["C:\\Program Files (x86)\\Androidandroid-sdk\\platform-tools\\platform-tools\\apksigner.jar",,在Androidandroid-sdk目录下少了apksigner.jar,那我们网上找到这个jar包放到此目录

我放个资源吧,大家需要的话直接下载,百度搜一下Could not find 'apksigner.jar',有不少解决方法,看到有个百度网盘地址,大家可以自行下载

链接:https://pan.baidu.com/s/1D7lbJEkFYqA_cMpKg41j7Q
提取码:5drn

然后再来执行一次Start Session

再次报错 

Failed to create session. An unknown server-side error occurred while processing the command. Original error: Cannot verify the signature of 'C:\Users\86181\AppData\Local\Temp\2023010-7308-10y6gju.v7xa\appium-uiautomator2-server-v4.27.0.apk'. Original error: The 'java.exe' binary could not be found neither in PATH nor under JAVA_HOME (C:\Program Files (x86)\Common Files\Oracle\Java\javapath\bin)

APP自动化测试(2)-通过appium打开手机的应用

 好像是我的JAVAHOME的环境变量设错了,提示了这个路径“C:\Program Files (x86)\Common Files\Oracle\Java\javapath\bin”,这个是安装完JDK后自动生成环境变量中Path的路径,C:\Program Files (x86)\Common Files\Oracle\Java\javapath,而这个路径确实没有bin目录,我们记得JAVA_HOME配置的是C:\Program Files\Java\jre1.8.0_351,我们把path中的路径改成这个试试,并将JAVA_HOME也配置到path中

APP自动化测试(2)-通过appium打开手机的应用

 重启命令行,运行java -version,java环境变量应该没问题

APP自动化测试(2)-通过appium打开手机的应用

 再执行startSession,发现还是报相同的错误,可我们环境变量已经没有C:\Program Files (x86)\Common Files\Oracle\Java\javapath 这个路径了,想起我们前面配置Appium的时候,JAVA_HOME配置的是这个路径,如下图,我们改过来,改成配置环境变量中JAVA_HOME的jdk的路径C:\Program Files\Java\jre1.8.0_351

APP自动化测试(2)-通过appium打开手机的应用

保存后重启Appium,重新启动,然后再StartSession,然后还是报相同的错,这就尴尬了!!

继续解决

继续百度,找到一个方法,说是注册表的问题

方法如下:

JAVA_HOME的环境变量值根本不是这个目录,到CMD命令窗口下,用echo %JAVA_HOME%,也显示正常,但是java -version时,显示java的home目录仍然是C:\Java\jre7,"百撕不得妻姐"之后,去问了度娘,原来JDK如果执行过安装程序后,会在

HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Java Runtime Environment\1.7.0_45\MSI\ 留下印记,里面有一项INSTALLDIR记录的还是当时安装的旧路径

按照操作,发现我注册表里面的路径是C:\Program Files\Java\jre1.8.0_351

APP自动化测试(2)-通过appium打开手机的应用

怎么办呢? 出绝招,重启电脑,然后再启动Appium Server GUI,并start server,再启动Appium Inspector,然后 start Session,这次启动很慢,没有立刻报错,怀着忐忑的心情等着,居然成功了!

APP自动化测试(2)-通过appium打开手机的应用

步骤很多,现在也搞不清楚到底是哪里出问题,如果大家碰到相同的问题,我稍微总结一下步骤从如下操作

1、安装 appium-doctor,并在命令行运行appium-doctor,解决其中几个关键警告,配置ANDROID_HOME和JAVA_HOME两个环境变量,JAVA_HOME配置java的安装目录。

        如果不知道java的安装目录,可以在命令行运行“java -verbose”,最后一行就是java的jdk安装目录了

2、解决apkanalyzer.bat could NOT be found in C:\Program Files (x86)\Androidandroid-sdk!的警告,下载一个apkanalyzer.bat放到ANDROID_HOME对应的目录

3、Could not find 'apksigner.jar' in ["C:\\Program Files (x86)\\Androidandroid-sdk\\platform-tools\\platform-tools\\apksigner.jar",,在Androidandroid-sdk目录下少了apksigner.jar,那我们网上找到这个jar包放到此目录,我放了一个资源大家可以免费下载Couldnotfindapksigner.jar解决的资源-Java文档类资源-CSDN下载

4、手机开发者选项中,将“禁止权限监控”打开

5、appium的JAVA_HOME配置的路径跟环境变量一样

6、重启电脑

如果上述步骤没解决问题,就只能根据第三章 Start Session 一个一个试了

PS:花了好几个晚上,终于解决Appium连接手机应用的问题了,下面可以继续下面的练习了文章来源地址https://www.toymoban.com/news/detail-483098.html

到了这里,关于APP自动化测试(2)-通过appium打开手机的应用的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Python +Appium 实现app自动化测试

    一、Appium简介 Appium是一款开源工具,用于自动化iOS、Android和Windows桌面平台上的本地、移动web和混合应用程序。原生应用是指那些使用iOS、Android或Windows sdk编写的应用。移动网页应用是通过移动浏览器访问的网页应用(appum支持iOS和Chrome上的Safari或Android上的内置“浏览器”应用

    2023年04月09日
    浏览(42)
  • 【APP自动化测试必知必会】Appium之微信小程序自动化测试

    H5 是指第 5 代 HTML ,也指用 H5 语言制作的一切数字产品。 所谓 HTML 是“超文本标记语言”的英文缩写。我们上网所看到网页,多数都是由 HTML 写成的。 “超文本”是指页面内可以包含图片、链接,甚至音乐、程序等非文字元素。而“标记”指的是 这些超文本必须由包含属性

    2024年02月09日
    浏览(108)
  • 使用Appium2.0自动化规模测试APP

    最近做个项目需要测试服务端的并发性能,客户端采用安卓,接口数据采用Restul和流媒体播放。由于流媒体的接口并不清楚,所以决定采用安卓虚拟机来模拟。 正好赶上Appium2.0升级,网上的很多资料都不能用了,这里将整个环境搭建的要点记录下来与大家分享。 #1. Appium2.0的

    2024年02月08日
    浏览(50)
  • app自动化测试之Appium问题分析及定位

    使用 Appium 进行测试时,会产生大量日志,一旦运行过程中遇到报错,可以通过 Appium 服务端的日志以及客户端的日志分析排查问题。 Appium Server日志-开启服务 通过命令行的方式启动 Appium Server,下面来分析一下启动日志,日志第一行显示了 Appium 版本信息和服务在本地的运行

    2024年02月14日
    浏览(37)
  • APP自动化测试系列之Appium介绍及运行原理

    在面试APP自动化时,有的面试官可能会问Appium的运行原理,以下介绍Appium运行原理。 Appium是一个开源测试自动化框架,可用于原生,混合和移动Web应用程序测试。它使用WebDriver协议驱动IOS,Android和Windows应用程序。 Appium是开源的移动端自动化测试框架; Appium可以测试原生的

    2024年02月13日
    浏览(57)
  • 全网最细最全Appium自动化测试 iOS入门教程,App自动化测试教程,精细整理

    目录:导读 一、MAC电脑上 Appium 的安装流程 二、流程图 三、下载AppiumServerGui和AppiumInspector 四、开始测试       1、真机测试                 1.1 准备工作                 1.2 获取 开发包 .app 结尾                 1.3 WebDriverAgent使用                 1.4 配置 Appium Inspec

    2024年02月07日
    浏览(53)
  • Python+Appium+Pytest+Allure实战APP自动化测试框架

    Hi,大家好。今天我们来聊聊Python+Appium+Pytest+Allure实战APP自动化测试,pytest只是单独的一个单元测试框架,要完成app测试自动化需要把pytest和appium进行整合,同时利用allure完成测试报告的产出。 编写常规的 线性 脚本具体的步骤如下: 1、设计待测试APP的 自动化测试 用例 2、

    2023年04月09日
    浏览(81)
  • APP自动化测试-Python+Appium+Pytest+Allure框架实战封装(详细)

    pytest只是单独的一个单元测试框架,要完成app测试自动化需要把pytest和appium进行整合,同时利用allure完成测试报告的产出。 编写常规的线性脚本具体的步骤如下: 1、设计待测试APP的自动化测试用例 2、新建app测试项目 3、配置conftest.py文件等 4、编写整体app测试用例运行文件

    2024年02月14日
    浏览(63)
  • 『App自动化测试之Appium应用篇』| 继承于selenium常用的元素定位方法有哪些?如何使用?

    在了解元素等位前,我们先了解下 app 的一些类型,只有了解这些 app 的类型才能针对性的选择元素定位方法; 因为不同类型的app的定位方式可能存在差异性; 我们了解到 APP 可以分为原生 APP 、 Web APP 、混合 APP 。 而原生 APP 是基于 Android 或 iOS 平台官方的语言、类库、工具

    2024年02月03日
    浏览(52)
  • 『App自动化测试之Appium应用篇』| 元素定位工具uiautomatorviewer从简介、特点、启动到使用的完整过程

    之前文章说明了 Appium Inspector 的定位使用方法; uiautomatorviewer 是另一种定位工具; uiautomatorviewer 是 android-sdk 自带的元素定位工具; 它是通过截屏分析 XML 布局文件方式,来提供控件信息的查看服务。 uiautomatorviewer 和 Appium Inspector 有着明显的区别; Appium Inspector 功能相对比较

    2024年02月03日
    浏览(63)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包