標籤:
轉自:http://m.blog.csdn.net/blog/kittyboy0001/40893979appium
Appium是一個開源的,適用於原生或混合行動裝置 App應用( hybrid mobile apps)的自動化測試平台,可以非常快捷的為iOS和Android移動平台建立功能自動化測試案例。相比其他的移動自動化測試載入器,Appium測試由於調用了Selenium的client庫使其可以使用任意的語言,包括Python、Ruby、Node.js,Objective,java等。
官方地址:http://appium.io/
1 系統需求iOS
Mac OSX 10.7+
XCode 4.5+ w/ Command Line Tools
Android
Mac OSX 10.7+ or Windows 7+ or Linux
Android SDK ≥ 16 (SDK < 16 in Selendroid mode)
2 Appium的底層
iOS: Apple‘s UIAutomation
Android 4.2+: Google‘s UiAutomator
Android 2.3+: Google‘s Instrumentation
3 android真機運行
import java.net.MalformedURLException;import java.net.URL;import org.junit.After;import org.junit.Before;import org.openqa.selenium.remote.CapabilityType;import org.openqa.selenium.remote.DesiredCapabilities;import com.tmall.app.search.monkey.page.TMGuideActivityPage;import io.appium.java_client.AppiumDriver;public class BaseTest { protected AppiumDriver driver; //開啟app,進行一些初始化工作。如進入目標頁面等... @Before public void setUp() throws Exception { setUpDriver(); //TMGuideActivityPage page = new TMGuideActivityPage(driver); //if(page.isReady()){ // page.splash(); //} } @After public void tearDown() throws Exception { driver.quit(); } //啟動appium Driver public void setUpDriver() throws MalformedURLException{ // final File appDir = new File("D:\\TMApp"); // final File app = new File(appDir, "10002119.apk"); final DesiredCapabilities capabilities = new DesiredCapabilities(); capabilities.setCapability(CapabilityType.BROWSER_NAME, ""); capabilities.setCapability("deviceName", "Android"); capabilities.setCapability("platformVersion", "4.3"); capabilities.setCapability("platformName", "Android"); // capabilities.setCapability("app", app.getAbsolutePath()); capabilities.setCapability("appPackage", "com.tmall.wireless"); capabilities.setCapability("appActivity",//".module.main.TMMainTabActivity"); ".module.launchalert.TMLaunchAlertActivity"); capabilities.setCapability("appWaitActivity", ".module.main.TMMainTabActivity"); capabilities.setCapability("newCommandTimeout",120); driver = new AppiumDriver(new URL("http://127.0.0.1:4723/wd/hub"), capabilities); }}public class DetailTest extends BaseTest{ @Test public void MyDetailTest() { Search s = new Search(); s.doAction(driver); //assert(xxxxx);}
}
4 參數設定
DesiredCapabilities 負責啟動服務端時的參數設定。實際使用時根據自己的需要,可自行修改一些參數。
比如,應用程式在尋找某個頁面的元素時,定位可能會時間超長。預設的命令間隔時間是60s,如果在60s內沒有找到,就會自動結束。可以使用newCommandTimeout設定為更大的數值。
capabilities.setCapability("newCommandTimeout",240);
比如,最開始使用appium時,設定了上面的安裝apk的路徑,結果安裝後偵錯工具發現介面無返回資料。後來定位問題是因為安裝時進行了重簽名。程式的保護機制讓資料無返回了。可以使用noSign設定來避免重簽名。
capabilities.setCapability("noSign","true");
當然,後來發現不在程式裡寫檔案路徑,而是提前安裝好測試包,這樣就避免了每次都要重新安裝。
完整的Server參數
http://appium.io/slate/en/master/?ruby#appium-server-capabilities
**Server capabilities**Capability Appium 、SelendroidplatformName 平台的名稱:iOS, Android, or FirefoxOSplatformVersion 行動裝置的系統版本號碼,7.1, 4.4deviceName IOS:instruments -s devices,Android:隨便寫app 安裝檔案路徑:/abs/path/to/my.apk or http://myapp.com/app.ipabrowserName 測試的web瀏覽器,如果是測app則忽略newCommandTimeout 等待新命令的最長時間,逾時後退出。預設是60sautoLaunch 是否自動安裝和啟動,預設truelanguage 模擬器的語言設定locale 模擬器的地區設定udid 裝置號orientation 模擬器的橫豎屏設定autoWebview Move directly into Webview contextnoReset 在當前session前不重設app狀態fullReset ios刪除檔案夾,Android刪除app資料。**android only**appActivity 要啟動的ActivityappPackage 要啟動的包appWaitActivity 等待的ActivityappWaitPackage 等待的包 deviceReadyTimeout 等待裝置就緒的時間androidCoverage enablePerformanceLogging (Chrome and webview only)default=falseandroidDeviceReadyTimeoutandroidDeviceSocketavdavdLaunchTimeoutavdReadyTimeoutavdArgsuseKeystorekeystorePathkeystorePasswordkeyAliaskeyPasswordchromedriverExecutableautoWebviewTimeoutintentActionintentCategoryintentFlagsoptionalIntentArgumentsunicodeKeyboardresetKeyboardnoSign Skip checking and signing,work only with UiAutomator and not with selendroidignoreUnimportantViews**ios only**calendarFormatbundleIdudidlaunchTimeoutlocationServicesEnabledlocationServicesAuthorizedautoAcceptAlertsnativeInstrumentsLibnativeWebTapsafariAllowPopupssafariIgnoreFraudWarningsafariOpenLinksInBackgroundkeepKeyChainslocalizableStringsDirprocessArgumentsinterKeyDelayshowIOSLog
appium server參數