appium---第一个脚本--启动一个已存在的app-程序员宅基地

技术标签: python  测试  移动开发  

 

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系统的版本号

    4.appPackage:apk包名

    5.appActivity:apk的launcherActivity

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

 

 

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

 1 from appium import webdriver;
 2 from appium import version;
 3 #from selenium import webdriver;

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


17 } 18 19 drive=webdriver.Remote('http://127.0.0.1:4723/wd/hub',pack_info); 20 #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从哪里获取)

 

1 > 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}
2 > 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中启动正常

 

 

=====

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

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

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

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

 

转载于:https://www.cnblogs.com/shenyexiaoqingxin/p/10443324.html

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/baodiaoxe346599/article/details/101064650

智能推荐

python xml模块安装_Python安装xmlrpclib_天珊雪的博客-程序员宅基地

我在virtualenv并尝试运行脚本我得到以下内容:Traceback (most recent call last):File "blah.py", line 15, in from xmlrpc import serverImportError: No module named xmlrpc好吧,好像我需要xmlrpc,我假设我需要xmlrpclib所以我试试:(env) ❯❯❯ pip2....

学习Vue过程笔记和难点讲解(一)_初学者学vue的难点-程序员宅基地

一、开始学习首先看官网教程,遇到不会,再查找资料二、问题(不理解的坑)顺着左边目录一路看下来,在基础中基本是没什么问题的,直到深入组件才有1.关于Prop的知识vue中非props属性、$attrs和禁用 Attribute 继承链接:https://blog.csdn.net/weixin_41604040/article/details/109444759看一遍基本就懂了,他们的关系2.关于…..._初学者学vue的难点

linux中c语言的扩展库函数之文件操作-程序员宅基地

1:I/o操作函数每一个进程在启动的时候会打开三个文件,分别是stdout,stdin,stderr,他们的文件描述符号分别是0,1,2 open,read,write,close函数是文件操作函数unix中的低级调用,他们使用文件描述符作为借口 open函数,打开文件#include            #include            #i

在shell中如何判断字符串是否为有效的IP地址_shell 判断字符串是ip地址-程序员宅基地

正则表达 /b单词边缘 /B非单词边缘在shell中如何判断字符串是否为有效的IP地址_echoisecho_新浪博客http://blog.sina.com.cn/s/blog_53a844e50100xxus.html近来需要写个小shell判断用户输入的字符串是否为有效的ip地址,简单排除了以下几种情况:1. 以点号为分隔的域不等于4或6;2. 出现字符;3. 某域以..._shell 判断字符串是ip地址

测试笔试多选题-程序员宅基地

1、黑盒可以发现以下类型的错误是(ABCD)  A、界面错误  B、数据结构或外部数据库访问错误  C、功能错误或遗漏   D、性能错误2、下面哪些属于静态分析(ABC)   A、程序结构分析   B、代码规则检查   C、程序复杂度分析   D、内存泄露检查3、转载于:https://www.cnblogs.com/tynam/p/9097482.html..._笔试多选题

unix/Linux BSD以及System V---认知-程序员宅基地

一,BSD 和System V Unix操作系统在操作风格上主要分为System V和BSD(目前一般采用BSD的第4个版本SVR4),前者的代表的操作系统有Solaris操作系统,在Solaris1.X之前,Solaris采用的是BSD风格,2.x之后才投奔System V阵营。后者的代表的操作系统有FreeBSD。  System V它最初由AT&T开发,曾经也被...

随便推点

python省市区三级联动_Ajax实现省市区三级级联详解-程序员宅基地

本文主要为大家详细介绍了Ajax实现省市区三级级联,数据来自mysql数据库,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能帮助到大家。实现Ajax实现省市区三级级联,需要Java解析json技术整体Demo下载地址如下: 点我下载address.htmlInsert title here/*** 得到XMLHttpRequest对象*/function getajaxHttp() {v..._python ajax三级联动

springboot学习之旅04-web开发02_configurablewebserverfactory引入哪个jar-程序员宅基地

一.代码示例:1.1 扩展SpringMVC的映射、拦截器、国际化组件(注意看注释里说明)//使用WebMvcConfigurerAdapter可以来扩展SpringMVC的功能//@EnableWebMvc //不要接管SpringMVC@Configurationpublic class MyConfigAsLearn extends WebMvcConfigurerAdapt..._configurablewebserverfactory引入哪个jar

java shapefile 中文乱码_geotools修改shapefile 属性名乱码问题 (转载)_第三世界的妖孽的博客-程序员宅基地

在GeoServer中文社区的讨论地址为:http://opengeo.cn/bbs/read.php?tid=1701&page=ea使用geotools修改shapefile之后, 发现dbf文件内容中, 属性名都成了乱码, 但属性值就不是乱码。修改之前还没有乱码的。而且在代码中也已经通过以下方式设置过编码方式了:ShapefileDataStore shape = new Shape..._java geotools 修改属性

使用EasyExcel添加分类数据到数据库_easyexcel监听器中注入-程序员宅基地

1、测试EasyExcel的Demo(1) 目录结构FakeData(定义Excel表头的类文件):@Datapublic class FakeData { @ExcelProperty(value = "学号",index = 0) private Integer sno; @ExcelProperty(value = "姓名",index = 1) private String name;}TestEasyExcel:public class Tes_easyexcel监听器中注入

2021-08-30-程序员宅基地

COMSOL with MATLAB大量循环时内存溢出1、问题描述:使用COMSOL with MATLAB时,在脚本中编入了一个大规模的循环,刚开始计算没问题,可是经过长时间循环后,要么就停滞不动,要么就提示错误,其中有错误提示:Error using com.comsol.model.impl.SolverSequenceImpl/runAllJava exception occurred:Exception:java.lang.OutOfMemoryError: Java heap spa

多线程_jvm_management_miboidtable撖寡情_API工程师@的博客-程序员宅基地

多线程一、线程简介任务,进程,线程,多线程进程是资源分配的基本单位,它是程序执行时的一个实例,在程序运行时创建;线程是程序执行的最小单位,是进程的一个执行流,一个进程由多个线程组成的多任务:一边吃饭一边玩手机、一边上厕所一边玩手机。大脑一个时间做一个事情。多线程:为了提高效率,加了多个车道。普通方法调用:只有主线程一条执行路径,执行完后在执行下一个。调用run();多线程:多条执行路径,主线程和子线程并行交替执行。调用start();进程:一次程序执行的过程。进程获得处理机而运行是通过调_jvm_management_miboidtable撖寡情