1、可以使用android-sdk中的aapt工具

①、选择一个版本的build_tools,加入path环境变量中

②、验证aapt环境是否正常

3、下载你要测试的包到本地,放入某一地址中(随意):aapt dump badging D:\Users\4admin\Desktop\jianshu_xpgod.apk(包的位置)

然后就可以获得包的所有信息,如包名、LauncheActivity

4、然后就可以开始写脚本啦

四、写脚本

1platformName:这里是android的apk

2.deviceName:手机设备名称,可以通过adb devices查看

3.platformVersion:android系统的版本号(如6.0.1)

4.appPackage:apk包名

5.appActivity:apk的launcherActivity

注意!!!:这些信息基本都能在这里找到,一定不能写错

以下代码是照抄的网上资源

 from appium import webdriver;
from appium import version;
#from selenium import webdriver; #from appium import webDriver
pack_info={
'platformName':'android',
'deviceName':'215a343c0804',
'platformVersion':'',(也可以写版本号,如7.1.2)
'appPackage':'hykb.xmcy.hykb',(包名一定不能写错啊)
'appActivity':'com.xmcy.hykb.app.ui.splash.SplashActivity'
   "noReset": "True"(发现每次启动实际上是一个重装过程,这样每次都会重置权限,这个开关True就是不重装,False就是重装)

 }

 drive=webdriver.Remote('http://127.0.0.1:4723/wd/hub',pack_info);
#drive=webdriver.Remote('http://127.0.0.1:4723/wd/hub',pack_info);

运行后,

第一个问题:提示no moudle  name'selenium',虽然不知道运行appium相关为什么要用selenium,但很明显还需要按照这个第三方,下载就是了(pip install selenium)

第二个问题:第一个问题已经解决,那么确认连上手机、打开appium-client,运行py代码,正常应该要在设备中打开这个指定的app,实际却提示以下错误栈

Traceback (most recent call last):
File "C:/Users/4399-3046/PycharmProjects/test_case/appium_test.py", line 19, in <module>
drive=webdriver.Remote('http://127.0.0.1:4723/wd/hub',pack_info);
File "D:\python3.7\lib\appium\webdriver\webdriver.py", line 129, in __init__
proxy
File "D:\python3.7\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 157, in __init__
self.start_session(capabilities, browser_profile)
File "D:\python3.7\lib\appium\webdriver\webdriver.py", line 204, in start_session
response = self.execute(RemoteCommand.NEW_SESSION, parameters)
File "D:\python3.7\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 321, in execute
self.error_handler.check_response(response)
File "D:\python3.7\lib\site-packages\selenium\webdriver\remote\errorhandler.py", line 242, in check_response
raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.SessionNotCreatedException: Message: A new session could not be created. (Original error: Could not extract PIDs from ps output. PIDS: [], Procs: ["bad pid 'uiautomator'"])

百度了一下,意思大概是:无法创建一个新的回话,因为启动的activity从来没有被启动~~~啥意思??我指定的启动Activity也没写错呀~然后网上说要指定一个【

'appWaitActivity':'com.xmcy.hykb.app.ui.startup.role.RoleActivity'

】,加了还是错误(其实关键我不知道这个appwaitActivity从哪里获取)

 > info: [debug] Responding to client with error: {"status":33,"value":{"message":"A new session could not be created. (Original error: Could not extract PIDs from ps output. PIDS: [], Procs: [\"bad pid 'uiautomator'\"])","origValue":"Could not extract PIDs from ps output. PIDS: [], Procs: [\"bad pid 'uiautomator'\"]"},"sessionId":null}
> info: <-- POST /wd/hub/session 500 11260.389 ms - 288

第二次尝试:仔细看了一下appium控制台的报错信息,找到以下信息:

百度了一下,说是要在appium/node_modules\appium-adb\lib\adb.js中加入以下代码,保存后,重启appium;--------------------------------加这个是因为我的手机版本号是7.0以上的,7.0以上Uautomator不兼容的问题,最终重启后,终于正常

======

最终,app中启动正常

=====

发现另外一个问题,虽然上面已经启动成功

①、当我电脑上即打开了夜神模拟器,又链接了电脑,此时,再运行代码,会提示,找不到目标计算机

但等我关掉两个模拟器,又正常了

是不是一次不能链接太多设备??

===========================

后面又遇到一个问题

在部分android机型(目前在vivo中有遇到)上每次运行最新版的appium-desktop都需要安装AppiumSetting以及Unlock,并且安装过程需要用户手动来确认,即使测试机上已经安装了这两个组件,运行appium也会要求安装,对于测试以及脚本的调试来说非常不便。

解决方案:https://www.cnblogs.com/testway/p/9324441.html

appium---第一个脚本--启动一个已存在的app的更多相关文章

  1. python2.7+appium第一个脚本(使用夜神模拟器)

    搭建好环境后,可以开始准备脚本的编写工作 目录 1.安装夜神模拟器 2.使用uiautomatorviewer定位 3.运行第一个脚本 1.安装夜神模拟器 第一步:官网下载夜神模拟器,完成安装 双击下 ...

  2. Appium学习路—脚本篇(启动app)

    启动之前的准备   1.脚本执行前,需要先启动appium的server端, 启动server方法: 打开appium客户端,点击右上角的Launch     2.iOS的测试只能在mac本上做   ...

  3. init进程 && 解析Android启动脚本init.rc && 修改它使不启动android && init.rc中启动一个sh文件

    Android启动后,系统执行的第一个进程是一个名称为init 的可执行程序.提供了以下的功能:设备管理.解析启动脚本.执行基本的功能.启动各种服务.代码的路径:system/core/init,编译 ...

  4. Appium+Python app自动化测试之脚本启动和停止Appium服务

    研究了一段时间的Appium android app的自动化测试,工作中需要连接多台手机终端同时执行测试用例,我实现的方式是获取用例中需要执行用例的设备id个数以及实际连接到的设备数(通过adb de ...

  5. Appium + Python App自动化(2)第一个脚本

    [1]打开你的夜神模拟器(或者连接你的手机) [2]打开桌面的Appium [3]下载你要测的App的apk文件,放到桌面 [4]拖动你的apk安装包到夜神模拟器里,然后模拟器会提示你安装.安装.原来 ...

  6. Appium + Python App自动化第一个脚本

    今天跟大家讲解一个Appium和Python App自动化的脚本.[1]打开你的夜神模拟器(或者连接你的手机) [2]打开桌面的Appium [3]下载你要测的App的apk文件,放到桌面[4]拖动你 ...

  7. python+Appium自动化:运行第一个appium脚本

    用pycharm工具进行编写,运行一个开启淘宝app实例 from appium import webdriver desired_caps = { "platformName": ...

  8. 通过USB和wifi连接真机&编写第一个脚本

    一.通过USB和wifi连接真机 1. 数据线连接手机并允许调试 cmd命令行执行:adb devices (能查看到设备就可以进行编写自动化脚本步骤了,如果在USB接触不良的情况下,可以执行下面步骤 ...

  9. 【Android Developers Training】 15. 启动一个Activity

    注:本文翻译自Google官方的Android Developers Training文档,译者技术一般,由于喜爱安卓而产生了翻译的念头,纯属个人兴趣爱好. 原文链接:http://developer ...

随机推荐

  1. Directory 中user Var 如何添加到通道变量中?

    FS默认的配置,ACL 是 拒绝的,只能通过 Digest 的方式进行认证,一旦认证成功之后,directory 中的 var 就能在通道中通过${} 的方式获取到. 如果ACL 认证通过 ,就直接走 ...

  2. Linux与Windows串口通信

    串口是常用的计算机与外部串行设备之间的数据传输通道,由于串行通信方便易行,所以应用广泛.现在国际上不断有串口新技术及新规格推出,结合社会各方面需要,串口通信发展的空间庞大.串口通讯技术因其自身的优势和 ...

  3. 查看和解除Linux系统对用户使用资源的限制

    查看当前系统资源限制 ulimit -a   设置用户的最大进程数(重启后失效) ulimit -u 1024   设置用户可以打开的最大文件句柄数(重启后失效) ulimit -n 65530   ...

  4. [转]PhpStorm快捷键大全

    1 前言 PhPStorm 是 JetBrains 公司开发的一款商业的 PHP 集成开发工具,PhpStorm可随时帮助用户对其编码进行调整,运行单元测试或者提供可视化debug功能.Phpstro ...

  5. dubbo常用网址

    https://dubbo.gitbooks.io/dubbo-user-book/content/references/protocol/dubbo.html http://dubbo.apache ...

  6. 43)django-用户认证,授权,自定义用户认证

    ##用户认证 django自带用户认证系统,包括认证和授权.用户认证系统由用户,权限,用户组,密码,cookie和session给组成. ###用户认证系统设置 #settings.py INSTAL ...

  7. 原来商家登录系统的commonjs

    /* *适配 */ //orientationchange方向改变事件 (function (doc,win) { var docEl = doc.documentElement,//根元素html ...

  8. CSS在线字体库,外部字体的引用方法@font-face

    @font-face是CSS3中的一个模块,他主要是把自己定义的Web字体嵌入到你的网页中,随着@font-face模块的出现,我们在Web的开发中使用字体不怕只能使用Web安全字体,你们当中或许有许 ...

  9. D3.js force力导向图用指定的字段确定link的source和target,默认是索引

    json.links.forEach(function (e) { var sourceNode = json.nodes.filter(function (n) { return n.name == ...

  10. input标签 disabled 和 readonly的区别

    需求描述:今天提交代码,老大审了一下,给我指出了一个改正的地方,XXX的详细信息页面(不是修改页面) input的内容是不能改的,给我指出的时候,我立马就知道了这个该怎么改了,加个readonly不就 ...