‘壹’ ios app 如何真机测试
iOS app如果想要进行真机调试,需要有一个开发者账号。如果个人要申请,需要准备一张VISA(美金)信用卡,MASTER(欧元)。
1. 个人的 99$ 申请简单,付钱就行,688人民币
2. 企业的 99$ 申请复杂,需要“邓白氏”认证,可以确认企业是合法有效的,可以管理团队开发
3. 商业的 299$ 也需要邓白氏认证,开发的应用,不能够上架(不经过苹果的审核),专门给企业级用户定制应用程序使用
4.通过开发者账号在苹果开发者网站上申请证书
5.将申请的证书安装到Xcode中,在配置好
6.连接手机,运行是选中手机即可在手机上进行真机模拟
‘贰’ 如何设置android studio让程序运行在真机中
1,在真机中设置USB调试模式打开,具体:“设置”->“应用瞎培程序”->谨晌“开发”->“USB调试”。
2,安装安卓的USB驱动,如果按照不好,那么去下载一个豌豆荚,它会帮你正确安装你的手机驱动。
3,直接运行你要测磨晌唯试的程序,我使用Android Studio,直接点击运行的那个三角号就OK了。
‘叁’ 用android uiautomator做自动化测试,怎么连接真机进行
Google在sdk4.0以后提供了一个自动化解决方案uiautomator:
优点:可以跨应用了;这可是亲生的;
缺点:必须sdk4.0以上版本;要想实现的好,最好有开发配合;java项目编译为jar后需要push到手机才能运行,也就是说必须打印日志暴力调试。
Appium基于Android InstrumentationFramework和UIAutomator,也就是说这个工具是可以跨应用的。说远了,好吧,为了帮大家更容易理解appium的使用,我这里就讲一下uiautomator的使用方法。
你应该有android-sdk吧,升级到4.0以上,进入目录android-sdk ools,你会看到两个文件:
traceview.bat 和 uiautomatorviewer.bat,这俩文件让你想起了monkeyrunner了吧,是的,traceview.bat就对应于hierarchyviewer.bat,用来查看程序的ui界面的,通常也是使用管理员权限启动的。
好了,现在用eclipse创建一个java project,是的,你没看错,是java project不是android project,添加引用:
在project.properties中内容为:
# Project target.
target=android-16
这里的android-16需要和之前的android.jar和uiautomator.jar位置相一致。
然后呢?写代码吧,建立一个类,得,发个给大家参考:
packagecom.uia.example.my;
importorg.apache.http.util.EncodingUtils;
importandroid.graphics.Bitmap;
importandroid.graphics.BitmapFactory;
importandroid.graphics.Rect;
importandroid.os.Environment;
importcom.android.uiautomator.core.UiObject;
importcom.android.uiautomator.core.UiObjectNotFoundException;
importcom.android.uiautomator.core.UiScrollable;
importcom.android.uiautomator.core.UiSelector;
importcom.android.uiautomator.testrunner.UiAutomatorTestCase;
importjava.io.File;
importjava.io.FileOutputStream;
importjava.io.IOException;
{
publicStringsLog;
publicFilefout=null;
=null;
publicvoidwrite2file(String filename,String sData)
{
String sLog="";
//初始化日志文件
if(Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)){
sLog = Environment.getExternalStorageDirectory().getAbsolutePath();
try{
fout=newFile(sLog,filename);
outStream=newFileOutputStream(fout,true);//此处的true是append
sData=sData +" ";
outStream.write(sData.getBytes());
outStream.flush();
outStream.close();
fout=null;
}
catch(Exception e){
e.printStackTrace();
}
}else{
System.out.println("该手机没有SD卡");
}
}
publicvoidtestDemo() {
//1.启动app
getUiDevice().pressHome();
UiObject allAppsButton =newUiObject(newUiSelector().description("Apps"));
allAppsButton.clickAndWaitForNewWindow();
UiObject appsTab =newUiObject(newUiSelector().text("Apps"));
appsTab.click();
UiScrollable appViews =newUiScrollable(newUiSelector().scrollable(true));
UiObject settingsApp = appViews.getChildByText(newUiSelector().className(android.widget.TextView.class.getName()),"Efilm");
settingsApp.clickAndWaitForNewWindow();
//2.进入主界面
System.out.println("into main view");
System.out.println(getUiDevice().waitForWindowUpdate("com.eshore.efilm", 60000));
System.out.println("intoed main view");
UiObject tv1 =newUiObject(newUiSelector().text("影院"));
tv1.click();
//3.点击影院
UiObject oyy=newUiObject(newUiSelector().description("cinema_row"));
System.out.println("wait yingyuan come out");
oyy.waitForExists(60000);
System.out.println("yingyuan come out");
oyy.clickAndWaitForNewWindow();
System.out.println("click yingyuan");
//4.场次
UiObject occ=newUiObject(newUiSelector().description("LinearLayout10"));
System.out.println("wait changci come out");
oyy.waitForExists(60000);
System.out.println("changci come out");
occ.clickAndWaitForNewWindow();
System.out.println("click changci");
//5.座位
UiObject oseat=newUiObject(newUiSelector().description("cinema_shows_list_item").index(0).childSelector(newUiSelector().description("LinearLayout10")));
System.out.println("wait seat come out");
oseat.waitForExists(5000);
inth=getUiDevice().getDisplayHeight();
intw=getUiDevice().getDisplayWidth();
System.out.println("(h/2,w/2)="+h/2+","+w/2);
getUiDevice().click(h/2,w/2);
//System.out.println("seat count:"+String.valueOf(oseat.getChildCount()));
//System.out.println("seat getText:"+ oseat.getText());
//截座位图
Process process;
try{
process = Runtime.getRuntime().exec("screencap /mnt/sdcard/EfilmFailSnapShot01.png");
try{
process.waitFor();
}catch(InterruptedException e) {//TODOAuto-generated catch block
e.printStackTrace();
}
}catch(IOException e) {
//TODOAuto-generated catch block
e.printStackTrace();
}
//takeScreenShots("EfilmSeatSnapShot");
}
}
这个例子是随便写的,可能不够严谨。大体就这么个情况吧。下一步就是编译执行了,先插上手机usb接口,然后打开cmd,执行:
找到SDKID,也就是android create中的-t参数:
cd C: PROGRAMandroid-sdk ools
android list
找到t参数的值以后:
cd C: PROGRAMandroid-sdk ools
android create uitest-project -n TAppWorkAssistV1 -t 25 -p C:android自动化Tv2.0TestSetting
cd C:android自动化Tv2.0TestSetting
ant build
cd C:android自动化Tv2.0TestSettingin
adb push TAppWorkAssistV1.jar /data/local/tmp/
adb shell uiautomator runtest TAppWorkAssistV1.jar -c com.uia.example.my. TAppWorkAssistV1
看了看,好像没有什么特别值得解释的
-n TAppWorkAssistV1:类名
-p: 项目所在目录
Ant build 把这个类编译成一个jar包:TAppWorkAssistV1.jar
然后把jar包push到手机上,调用执行这个类就可以了
大致是这么个步骤,不过有一个非常重要的细节,就是如果你需要更省心,就最好把界面元素,无论动态的还是布局文件中的,都加上content-description属性,并保证唯一性,根据:
UiSelector:description(String desc)
Set the search criteria to match thecontent-description property for a widget.
那就可以统一只使用这一个引用界面元素的方法就行了,就不用去想方设法利用其它的属性来引用了。
‘肆’ 如何实现app远程真机debug
首先,准备工作,需要借助如下这个辅助工具。。。
‘伍’ 如何在真机上调试Android应用程序
主要通过以下几个步骤:
1、手机通过数据线连接在电脑上
2、设置android手机为USB调试模式。步骤:menu—> 设置 —> 应用程序 —> 开发 , 选择【USB调试】
3、如果是window系统,系统会提示安装驱动:
7、选中手机设备,点击OK之后,程序就开始在真机上安装了,控制台输出如下信息:
[2011-04-07 22:24:49 - HelloWorld] Uploading HelloWorld.apk onto device ‘HT99YLG11834′
[2011-04-07 22:24:49 - HelloWorld] Installing HelloWorld.apk…
[2011-04-07 22:24:53 - HelloWorld] Success!
[2011-04-07 22:24:53 - HelloWorld] Starting activity com.eightqiu.activity.StatsResultActivity on device
[2011-04-07 22:24:57 - HelloWorld] ActivityManager: Starting: Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] cmp=com.eightqiu.activity/.StatsResultActivity }
8. 设置应用程序为调试模式。操作: 编辑AndroidManifest.xml 增加调试参数android:debuggable="true", 如下:
<application android:icon="@drawable/icon" android:label="@string/app_name" android:debuggable="true">
9. 执行真机调试操作:ECLIPSE调试对话框中,Target窗口中选择Manual,点击【debug】按钮,选择真机设备,开始调试。
注:不管是否启用ECLIPSE环境,任何Android软件只要在真机上运行发生异常,都可以在命令行窗口下查看具体异常信息:
执行:./adb logcat 可以查看到更多的系统异常消息。在这些消息中要注意查看Caused by:打 头的行,这些行指明了在哪行代码出的错误
10、运行这个应用程序,这样就可以使用手机来测试了
‘陆’ Appium连接真机设置及连接操作
前提:首先在手机上打开app
1.打开appium
2.启动appium Client
首次安装以上过程比较慢,会在手机上安装Appium Setting,Unlock的app,如果遇到坑可以查看之前的文章
https://www.jianshu.com/p/cf1c7413b709
安装以上app的时候盯着手机本身,会有安全提醒,不要被禁用就可以
启动好了就是如下界面
此时手机就能正常弹出taobao的app,所有的页面操作就会投射到appium上面。
尽量保持操作过程中一直开着taobao,appium在进行启动的时候会自动关老稿闭扒含手taobao,然后重新打开。春嫌
如果遇到问题可以留言讨论!
‘柒’ appium中怎么连接android真机测试
启动appium,执行testng测试脚本,脚本启动配置项如下:
import io.appium.java_client.AppiumDriver;import org.openqa.selenium.By;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.remote.CapabilityType;
import org.openqa.selenium.remote.DesiredCapabilities;
DesiredCapabilities capabilities = new DesiredCapabilities();
capabilities.setCapability(CapabilityType.BROWSER_NAME, "");//这句不是必须的
capabilities.setCapability("deviceName","Android Emulator");
capabilities.setCapability("platformVersion", "4.4");
capabilities.setCapability("platformName","Android");
capabilities.setCapability("appPackage", "com.android.calculator2");
capabilities.setCapability("appActivity", ".Calculator");
AppiumDriver driver = new AppiumDriver(new URL("http://127.0.0.1:4723/wd/hub"), cap