『壹』 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