一般功能
這些能力跨越多個驅動因素。
| 能力 |
描述 |
值 |
| automationName |
使用哪個自動化引擎 |
Appium(默認)或Selendroid或者UiAutomator2或者Espresso對於Android或XCUITestiOS或者YouiEngine使用You.i引擎構建的應用程序 |
| platformName |
使用哪個移動操作系統平台 |
iOS,Android或FirefoxOS |
| platformVersion |
移動操作系統版本 |
例如7.1,4.4 |
| deviceName |
使用的移動設備或模擬器的種類 |
iPhone Simulator,iPad Simulator,iPhone Retina 4-inch,Android Emulator,Galaxy S4,等....在iOS上,這應該是與儀器返回的有效設備之一instruments -s devices。在Android上,這個功能目前被忽略,盡管它仍然是必需的。 |
| app |
一個或一個文件的絕對本地路徑或遠程http URL ,或者包含其中的一個。Appium將首先嘗試在適當的設備上安裝這個應用程序二進制文件。請注意,如果您指定和功能(請參閱下文),則此功能對於Android不是必需的。與...不兼容。.ipa.apk.zipappPackageappActivitybrowserName |
/abs/path/to/my.apk 要么http://myapp.com/app.ipa |
| browserName |
移動網頁瀏覽器的名稱自動化。應該是一個空字符串,而不是自動化應用程序。 |
適用於iOS的“Safari”,適用於Android的“Chrome”,“Chromium”或“瀏覽器” |
| newCommandTimeout |
在假定客戶端退出並結束會話之前,Appium將等待來自客戶端的新命令(以秒為單位) |
例如 60 |
| language |
(Sim / Emu-only)為模擬器/仿真器設置的語言 |
例如 fr |
| locale |
(Sim / Emu-only)為模擬器/仿真器設置的語言環境 |
例如 fr_CA |
| udid |
連接的物理設備的唯一設備標識符 |
例如 1ae203187fc012g |
| orientation |
(Sim / Emu-only)從某個方向開始 |
LANDSCAPE 要么 PORTRAIT |
| autoWebview |
直接進入Webview上下文。默認false |
true, false |
| noReset |
在此會話之前不要重置應用程序狀態。在這里看到更多的細節 |
true, false |
| fullReset |
執行完整的重置。在這里看到更多的細節 |
true, false |
| eventTimings |
啟用或禁用各種Appium內部事件的時間報告(例如,每個命令的開始和結束等)。默認為false。啟用,使用true。然后將這些時間作為events回應查詢當前會話的財產報告。請參閱事件時間文檔了解此響應的結構。 |
例如, true |
| enablePerformanceLogging |
(僅限Web和webview)啟用Chromedriver(在Android上)或Safari(在iOS上)性能記錄(默認false) |
true, false |
僅限Android
這些功能僅適用於基於Android的驅動程序(例如 UiAutomator2)。
| 能力 |
描述 |
值 |
| appActivity |
要從包中啟動的Android活動的活動名稱。這往往需要在一個.(例如,.MainActivity而不是MainActivity) |
MainActivity, .Settings |
| appPackage |
你想運行的Android應用程序的Java包 |
com.example.android.myApp, com.android.settings |
| appWaitActivity |
活動名稱/名稱,逗號分隔,您想要等待的Android活動 |
SplashActivity,SplashActivity,OtherActivity,*,*.SplashActivity |
| appWaitPackage |
您想等待的Android應用程序的Java包 |
com.example.android.myApp, com.android.settings |
| appWaitDuration |
用於等待appWaitActivity啟動的超時(以毫秒為單位20000)(默認) |
30000 |
| deviceReadyTimeout |
在等待設備准備就緒的幾秒鍾內超時 |
5 |
| androidCoverage |
完全合格的儀器類。通過-w在adb shell中,儀器-e覆蓋率為true -w |
com.my.Pkg/com.my.Pkg.instrumentation.MyInstrumentation |
| androidCoverageEndIntent |
由您自己執行的廣播操作,用於將覆蓋轉儲到文件系統。傳遞到-a在adb外殼廣播-a |
com.example.pkg.END_EMMA |
| androidDeviceReadyTimeout |
用於等待設備在啟動后准備就緒的秒數 |
例如, 30 |
| androidInstallTimeout |
用於等待apk安裝到設備的超時(以毫秒為單位)。默認為90000 |
例如, 90000 |
| androidInstallPath |
安裝前將在其中安裝apk的設備上的目錄名稱。默認為/data/local/tmp |
例如 /sdcard/Downloads/ |
| adbPort |
用於連接到ADB服務器的端口(默認5037) |
5037 |
| remoteAdbHost |
可選的遠程ADB服務器主機 |
例如:192.168.0.101 |
| androidDeviceSocket |
Devtools套接字名稱。只有當測試的應用程序是Chromium嵌入式瀏覽器時才需要。套接字由瀏覽器打開,並且Chromedriver作為devtools客戶端連接到它。 |
例如, chrome_devtools_remote |
| avd |
avd的名稱發射 |
例如, api19 |
| avdLaunchTimeout |
avd啟動並連接到ADB需要多長時間(默認值120000) |
300000 |
| avdReadyTimeout |
avd完成啟動動畫需要多長時間(默認120000) |
300000 |
| avdArgs |
啟動avd時使用的其他仿真器參數 |
例如, -netfast |
| useKeystore |
使用自定義密鑰庫來簽署apks,默認 false |
true 要么 false |
| keystorePath |
自定義密鑰庫路徑,默認〜/ .android / debug.keystore |
例如, /path/to.keystore |
| keystorePassword |
自定義密鑰庫的密碼 |
例如, foo |
| keyAlias |
密鑰的別名 |
例如, androiddebugkey |
| keyPassword |
密鑰的密鑰 |
例如, foo |
| chromedriverExecutable |
webdriver可執行文件的絕對本地路徑(如果Chromium embedder提供了自己的webdriver,則應該使用它來代替與Appium捆綁在一起的原始chromedriver) |
/abs/path/to/webdriver |
| autoWebviewTimeout |
等待Webview上下文激活的時間(以毫秒為單位)。默認為2000 |
例如 4 |
| intentAction |
意圖操作將用於啟動活動(默認android.intent.action.MAIN) |
例如android.intent.action.MAIN,android.intent.action.VIEW |
| intentCategory |
意圖類別,將用於啟動活動(默認android.intent.category.LAUNCHER) |
例如android.intent.category.LAUNCHER,android.intent.category.APP_CONTACTS |
| intentFlags |
將用於啟動活動的標志(默認0x10200000) |
例如 0x10200000 |
| optionalIntentArguments |
將用於啟動活動的其他意圖參數。請參閱意向參數 |
例如--esn <EXTRA_KEY>,--ez <EXTRA_KEY> <EXTRA_BOOLEAN_VALUE>等等。 |
| dontStopAppOnReset |
在使用adb啟動應用程序之前,不要停止被測試的應用程序的進程。如果被測試的應用程序是由另一個定位應用程序創建的,那么將其設置為false將允許在使用adb的測試應用程序啟動過程中定位應用程序的過程仍然存在。換句話說,在dontStopAppOnReset設置的時候true,我們不會-S在adb shell am start通話中包含標志。有了這個能力被省略或設置為false,我們包括-S標志。默認false |
true 要么 false |
| unicodeKeyboard |
啟用Unicode輸入,默認 false |
true 要么 false |
| resetKeyboard |
使用unicodeKeyboard功能運行Unicode測試后,將鍵盤重置為原始狀態。如果單獨使用,則忽略。默認false |
true 要么 false |
| noSign |
使用調試鍵跳過檢查和簽名應用程序,只能使用UiAutomator,而不能使用selendroid,默認false |
true 要么 false |
| ignoreUnimportantViews |
調用setCompressedLayoutHierarchy()uiautomator函數。此功能可以加快測試執行速度,因為輔助功能命令將更快地忽略某些元素。被忽略的元素是不可能找到的,這就是為什么這個功能也被實現為可切換的設置以及功能。默認為false |
true 要么 false |
| disableAndroidWatchers |
禁用觀察應用程序沒有響應和應用程序崩潰的android觀察者,這將減少Android設備/模擬器上的CPU使用率。這個功能只能用於UiAutomator,而不能用於selendroid,默認false |
true 要么 false |
| chromeOptions |
允許ChromeDriver傳遞chromeOptions功能。有關更多信息,請參閱chromeOptions |
chromeOptions: {args: ['--disable-popup-blocking']} |
| recreateChromeDriverSessions |
在移至非ChromeDriver網頁瀏覽的情況下殺死ChromeDriver會話。默認為false |
true 要么 false |
| nativeWebScreenshot |
在Web上下文中,使用本地(adb)方法截取屏幕截圖,而不是代理ChromeDriver。默認為false |
true 要么 false |
| androidScreenshotPath |
將要放置屏幕截圖的設備上的目錄名稱。默認為/data/local/tmp |
例如 /sdcard/screenshots/ |
| autoGrantPermissions |
讓Appium自動確定您的應用程序需要哪些權限,並在安裝時將其授予應用程序。默認為false |
true 要么 false |
| networkSpeed |
設置網絡速度模擬。指定最大的網絡上傳和下載速度。默認為full |
['full','gsm', 'edge', 'hscsd', 'gprs', 'umts', 'hsdpa', 'lte', 'evdo']檢查-netspeed選項有關avds速度仿真的更多信息 |
| gpsEnabled |
在開始會話之前,切換模擬器的gps位置提供程序。默認情況下,仿真器將根據設置的方式啟用或不啟用此選項。 |
true 要么 false |
| isHeadless |
true當不需要顯示設備顯示時,將此功能設置為無運行模擬器。false是默認值。isHeadless也支持iOS,請檢查XCUITest的具體功能。 |
例如, true |
僅限iOS
這些功能僅適用於XCUITest驅動程序和過時的UIAutomation驅動程序。
| 能力 |
描述 |
值 |
| calendarFormat |
(僅限SIM)為iOS模擬器設置的日歷格式 |
例如 gregorian |
| bundleId |
測試中的應用程序的捆綁ID。用於在真實設備上啟動應用程序或在測試啟動期間使用其他需要包ID的大寫字母。要使用軟件包ID在真實設備上運行測試,可以省略“應用”功能,但必須提供“udid”。 |
例如 io.appium.TestApp |
| udid |
連接的物理設備的唯一設備標識符 |
例如 1ae203187fc012g |
| launchTimeout |
假設它掛起和失敗會話之前以毫秒為單位等待儀器的時間 |
例如 20000 |
| locationServicesEnabled |
(僅限SIM)強制定位服務處於打開或關閉狀態。默認是保持當前的模擬設置。 |
true 要么 false |
| locationServicesAuthorized |
(僅限SIM)通過plist將位置服務設置為授權或未授權,以便位置服務警報不會彈出。默認是保持當前的模擬設置。請注意,如果您使用此設置,您還必須使用該bundleId功能發送您的應用的捆綁ID。 |
true 要么 false |
| autoAcceptAlerts |
如果彈出,則自動接受所有iOS警報。這包括隱私訪問權限提醒(例如,位置,聯系人,照片)。默認是false。不適用於XCUITest基於測試。 |
true 要么 false |
| autoDismissAlerts |
如果彈出,則自動關閉所有iOS警報。這包括隱私訪問權限提醒(例如,位置,聯系人,照片)。默認是false。不適用於XCUITest基於測試。 |
true 要么 false |
| nativeInstrumentsLib |
使用本機intruments lib(即禁用儀器,無延遲)。 |
true 要么 false |
| nativeWebTap |
(僅限SIM)在Safari中啟用“真實”,非基於JavaScript的網頁瀏覽。默認:false。警告:根據視口的大小/比例,這可能無法准確地點擊一個元素 |
true 要么 false |
| safariInitialUrl |
(僅限SIM)(> = 8.1)初始Safari瀏覽器網址,默認為本地歡迎頁面 |
例如 https://www.github.com |
| safariAllowPopups |
(僅限Sim)允許JavaScript在Safari中打開新窗口。默認保持當前的模擬設置 |
true 要么 false |
| safariIgnoreFraudWarning |
(僅限SIM)防止Safari顯示欺詐網站警告。默認保持當前的模擬設置。 |
true 要么 false |
| safariOpenLinksInBackground |
(僅限SIM)Safari是否應允許在新窗口中打開鏈接。默認保持當前的模擬設置。 |
true 要么 false |
| keepKeyChains |
(Sim-only)當appium會話開始/結束時是否保留鑰匙串(Library / Keychains) |
true 要么 false |
| localizableStringsDir |
在哪里尋找可本地化的字符串。默認en.lproj |
en.lproj |
| processArguments |
使用工具傳遞給AUT的參數 |
例如, -myflag |
| interKeyDelay |
輸入時發送到元素的擊鍵之間的延遲,以毫秒為單位。 |
例如, 100 |
| showIOSLog |
是否顯示從appium日志中的設備捕獲的任何日志。默認false |
true 要么 false |
| sendKeyStrategy |
用於將測試類型輸入測試領域的策略。模擬器默認:oneByOne。實際設備默認值:grouped |
oneByOne,grouped或者setValue |
| screenshotWaitTimeout |
以秒為單位的最大超時等待生成屏幕截圖。默認:10 |
例如, 5 |
| waitForAppScript |
ios自動化腳本用於確定應用程序是否已啟動,默認情況下系統等待頁面源不為空。結果必須是布爾值 |
例如true;,target.elements().length > 0;,$.delay(5000); true; |
| webviewConnectRetries |
向遠程調試器發送連接消息以獲取webview的次數。默認:8 |
例如, 12 |
| appName |
被測應用程序的顯示名稱。用於在iOS 9+中自動化后台應用程序。 |
例如, UICatalog |
| customSSLCert |
(僅限Sim / Emu)向模擬器添加SSL證書。 |
例如 |
| webkitResponseTimeout |
(僅限實際設備)設置時間(以毫秒為單位)以等待Safari會話中WebKit的響應。默認為5000 |
例如, 10000 |
{
"platformName": "Android",
"platformVersion": "7.0",
"deviceName": "FFK0116B30000505",
"app": "D:\\weixin.apk",
"noReset": true,
"adbPort": "5148"
}
{
"platformName": "Android",
"deviceName": "FFK0116B30000505",
"platformVersion": "7.0",
"adbPort": "5148",
"appPackage": "com.android.calculator2",
"appActivity": "com.android.calculator2.Calculator"
}
from appium import webdriver
from time import sleep
desired_caps = {
'platformName': 'Android',
'deviceName': 'B7E0117228000104',
'platformVersion': '7.0',
'adbPort' : '5148',
'appPackage':'com.android.calculator2',
'appActivity':'com.android.calculator2.Calculator'
}
driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps)
driver.find_element_by_id("com.android.calculator2:id/digit_1").click()
driver.find_element_by_id("com.android.calculator2:id/digit_5").click()
driver.find_element_by_id("com.android.calculator2:id/digit_9").click()
driver.find_element_by_id("com.android.calculator2:id/del").click()
driver.find_element_by_id("com.android.calculator2:id/digit_9").click()
driver.find_element_by_id("com.android.calculator2:id/digit_8").click()
driver.find_element_by_id("com.android.calculator2:id/op_add").click()
driver.find_element_by_id("com.android.calculator2:id/digit_6").click()
driver.find_element_by_id("com.android.calculator2:id/op_div").click()
driver.find_element_by_id("com.android.calculator2:id/digit_8").click()
driver.find_element_by_id("com.android.calculator2:id/eq").click()
sleep(3)
driver.quit()
appium官網https://bitbucket.org/appium/appium.app/downloads/
Appium-desktop 下載地址:https://github.com/appium/appium-desktop/releases
Appium 如何連接第三方模擬器,連接時把你自己的adb.exe 拷貝一份,將nox_adb.exe 替換掉, 替換前備份。原因是你倆的adb版本不一致。
adb connect 127.0.0.1:62001 夜游模擬器
adb啟動問題:Invalid argument: cannot open transport registration socketpair could not read ok from ADB Server failed to start daemon * error: cannot connect to daemon
解決辦法:
關閉系統自帶的防火牆,重啟OK
轉自:http://www.cnblogs.com/tester-l/p/7810915.html
