appuim启动报错
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了appuim启动报错相关的知识,希望对你有一定的参考价值。
启动appium时,突然报错,这时候关键看这句话:main.js: error: Unrecognized arguments: file\base.apk.这里表示有个空找不着。
原因是上次打开时,不小心将设置中的package选中,导致每次启动时,都会去检查package。但是没有使用package,就报错了。因此把package前面的勾去掉,再次运行,即可启动。
拓展资料:
appium 是一个自动化测试开源工具,支持 iOS 平台和 Android 平台上的原生应用,web应用和混合应用。
其特点有:
1.“移动原生应用”是指那些用iOS或者 Android SDK 写的应用(Application简称app)。
2.“移动web应用”是指使用移动浏览器访问的应用(appium支持iOS上的Safari和Android上的 Chrome)。
3.“混合应用”是指原生代码封装网页视图——原生代码和 web 内容交互。比如,像 Phonegap,可以帮助开发者使用网页技术开发应用,然后用原生代码封装,这些就是混合应用。
重要的是,appium是一个跨平台的工具:它允许测试人员在不同的平台(iOS,Android)使用同一套API来写自动化测试脚本,这样大大增加了iOS和Android测试套件间代码的复用性。
appium是跨平台的,可以用在OSX,Windows以及Linux桌面系统上运行。
appium选择了Client/Server的设计模式。只要client能够发送http请求给server,那么的话client用什么语言来实现都是可以的,这就是appium及Selenium(WebDriver)如何做到支持多语言的原因;
appium扩展了WebDriver的协议,没有自己重新去实现一套。这样的好处是以前的WebDriver API能够直接被继承过来,以前的Selenium(WebDriver)各种语言的binding都可以拿来就用,省去了为每种语言开发一个client的工作量。 参考技术A 程序启动报错,这时只能选择关闭程序运行。
然后选择安全模式修复软件。
修复完成,点击重启,检测数据信息正确性。 参考技术B 你好,根据你的描述,你说的应该是APPium启动报错,一般有两种情况:一是环境变量设置参数不正确导致的,可重新设置一下。二是node和appium的版本兼容问题,可以检查版本是否兼容。 参考技术C 可以直接重新尝试一下启动机器,这样的话可以重新运行
Appuim项目实战---录制视频
背景:在app测试中,很多场景当时出现,后期无法出现,如果这个时候就通过录制视频的方式记录那么问题就很快解决了,录制视频的简单命令:adb shell screenrecord --time-limit 10 /sdcard/demo.mp4 默认录制10分钟就结束,注意我录制视频是会使用ip,因为在框架中断掉手机也需要使用到ip, 默认录制视频使用的屏幕都很大,我们可以换个小的屏幕,具体录制视频adb参数可以看这篇博客http://blog.csdn.net/wirelessqa/article/details/22725581
在我们项目中,我们实际需要在方法开始前执行录制视频,在监听成功或者失败后,在结束掉录制视频,而关键在于,结束是把录制视频的进程给杀掉,在启动时就记录了这个进程,然后就是把文件pull到本地,运行的类都不变化,就增加一个监听方法,以下是主要实现思路
package until; import java.io.IOException; public class publicmethod { /** * * @测试点: 开始录制视频 @param @param ip @param @param name @param @return * @备注: Process * @author zhangjun * @date 2017年9月13日 @修改说明 */ public Process startRecordVideo(String ip,String name){ System.out.println("开始录制视频"); String runadb="adb -s "+ip+" shell screenrecord /sdcard/"+name+".mp4"; System.out.println("执行的命令:"+runadb); Process runprocess = null; try { runprocess = Runtime.getRuntime().exec(runadb); } catch (IOException e) { e.printStackTrace(); } return runprocess; } /** * * @测试点: 结束视频录制,通过杀掉录制视频的进程,然后把视频数据复制到另外一个文件中 @param process 传入的进程 @param path 视频录制的位置 @param ip 传入的ip * @备注: void * @author zhangjun * @date 2017年9月13日 @修改说明 */ // public void stopRecordVideo(Process process, String path, String ip) { process.destroy(); // 结算掉进程 // 移动视频地址 String moveVideo = "adb -s " + ip + " pull " + path + "" + " D:\\\\test"; System.out.println("执行的命令:" + moveVideo); try { Runtime.getRuntime().exec(moveVideo);// 移动数据内容 System.out.println("移动视频成功,请在d盘test下查看"); } catch (IOException e) { e.printStackTrace(); } } }
更改监听器内容,
package until; import org.testng.ITestContext; import org.testng.ITestResult; import org.testng.TestListenerAdapter; public class TestngListener extends TestListenerAdapter { boolean Recordvideo=false; publicmethod pubmethod=new publicmethod(); Process getprocess; String ip="10.37.2.151:5555"; @Override public void onTestStart(ITestResult result) { super.onTestStart(result); logTest.logInfo("启动我是onTestStart,我是testng的测试方法"); String name=result.getName(); logTest.logInfo("获取的方法名"+name); getprocess=pubmethod.startRecordVideo(ip,name); } @Override public void onStart(ITestContext testContext) { super.onStart(testContext); logTest.logInfo("启动我是onstart,所有初始化都在我这里做"); } @Override public void onTestFailure(ITestResult tr) { super.onTestFailure(tr); logTest.logInfo("我是onTestFailure,代表我们的其他操作失败了"); //结束视频 pubmethod.stopRecordVideo(getprocess, "sdcard/"+tr.getName()+".mp4",ip); } @Override public void onTestSuccess(ITestResult tr) { super.onTestSuccess(tr); //结束视频 pubmethod.stopRecordVideo(getprocess, "sdcard/"+tr.getName()+".mp4",ip); } @Override public void onTestSkipped(ITestResult tr) { super.onTestSkipped(tr); } }
以上是关于appuim启动报错的主要内容,如果未能解决你的问题,请参考以下文章