! Appium. , Appium Essentials:
. . , .
, [ ]. , , . : , , -
JAVA_HOME. .
, ( ).
, . !
1. .
Appium, JSON wire protocol, Appium, Desired capabilities Appium.
Appium
Appium HTTP-, Nodes, WebDriver-. Appium , Selenium WebDriver, HTTP- JSON , .
, Appium iOS Android.
Appium iOS
iOS-, Appium Apple's UIAutomation API, UI-. UIAutomation JavaScript-, Apple . Appium iOS-.
, :
HTTP- Appium- JSON. Appium- (UIAutomation).
bootstrap.js
, Appium- iOS-. , ,
bootstrap.js
iOS-. , .
Appium-Android.
Appium Android
Android-, Appium UIAutomator, . UIAutomator , Android .
, :
UIAutomator/Selendroid Apple ,
bootstrap.js
bootstrap.jar
. Appium Android 17 . , Selendroid. , Appium UIAutomator Selendroid, Android. ,
bootstrap.jar
TCP-, , . , Android- Selendroid UIAutomator.
Selenium JSON wire protocol
JSON wire protocol (JSONWP) , WebDriver. (endpoints), RESTful API. WebDriver JSONWP Firefox driver, IE driver, Chrome driver ..
Appium Mobile JSONWP Selenium JSONWP , / .
API, :
/session/:sessionId
/session/:sessionId/element
/session/:sessionId/elements
/session/:sessionId/element/:id/click
/session/:sessionId/source
/session/:sessionId/url
/session/:sessionId/timeouts/implicit_wait
Appium , WebDriver, REST API. , , :
AppiumDriver.getPageSource();
HTTP-, [, ? ] API. , ,
getPageSource
, :
/session/:sessionId/source
, JSON- AppiumDriver ,
source
.
page source
. -HTML ( ), Appium XML-, UI-. , .
Appium
, ; . ,
sessionId
. . ,
sessionId
, .
Desired capabilities
Desired capabilities [ ] JSON- ( -), . DC .
. , Appium-:
org.openqa.Selenium.remote.DesiredCapabilities
[ Java], DC.
|
|
automationName |
, . Android SDK 17, Selendroid . , Appium . :
DesiredCapabilities caps = new DesiredCapabilities(); //
caps.setCapability("automationName","Selendroid"); //
, Appium. io.appium.java_client.remote.MobileCapabilityType :
caps.setCapability(MobileCapabilityType.AUTOMATION_NAME,"Selendroid");
iOS .
|
platformName |
. : iOS , Android FirefoxOS . :
caps.setCapability("platformName","Android");
Appium:
caps.setCapability(MobileCapabilityType.PLATFORM_NAME, "Android");
|
platformVersion |
. :
caps.setCapability("platformVersion","4.4.4");
Appium:
caps.setCapability(MobileCapabilityType.PLATFORM_VERSION, "4.4.4");
|
deviceName |
, iPhone Simulator , iPad Simulator , iPhone Retina 4-inch , Android Emulator , Moto x , Nexus 5 . :
caps.setCapability("deviceName", "Nexus 5");
Appium:
caps.setCapability(MobileCapabilityType.DEVICE_NAME,"Nexus 5");
|
app |
URL .ipa , .apk , .zip . Appium . , Android appPackage appActivity ( ), app . :
caps.setCapability("app","/apps/demo/demo.apk or http://app.com/app.ipa");
Appium:
caps.setCapability(MobileCapabilityType.APP,"/apps/demo/demo.apk or http://app.com/app.ipa");
|
browserName |
- . . :
caps.setCapability("browserName", "Safari");
Appium:
caps.setCapability(MobileCapabilityType.BROWSER_NAME, "Safari");
|
newCommandTimeout |
Appium , [ ], , . 60 []. :
caps.setCapability("newCommandTimeout", "30");
Appium:
caps.setCapability(MobileCapabilityType.NEW_COMMAND_TIMEOUT,"30");
|
autoLaunch |
. true . :
caps.setCapability("autoLaunch","false");
|
language |
. fr , es . :
caps.setCapability("language","fr");
|
locale |
. fr_CA , tr_TR . :
caps.setCapability("locale","fr_CA");
|
udid |
(unique device identifier) iOS-. 40 (, 1be204387fc072g1be204387fc072g4387fc072g). udid iOS-. Udid iTunes, Serial Number . :
caps.setCapability("udid", "1be204387fc072g1be204387fc072g4387fc072g");
|
orientation |
. : LANDSCAPE PORTRAIT . :
caps.setCapability("orientation", "PORTRAIT");
|
autoWebview |
Webview, ; false . :
caps.setCapability("autoWebview", "true");
|
noReset |
. : false . :
caps.setCapability("noReset", "true");
|
fullReset |
iOS: . Android: , , . , . false . :
caps.setCapability("fullReset", "true");
|
Android capabilities
|
|
appPackage |
, Java- . : com.android.calculator2 com.android.settings
caps.setCapability("appPackage", "com.android.calculator2");
Appium:
caps.setCapability(MobileCapabilityType.APP_PACKAGE, "com.android.calculator2");
|
appActivity |
, Activity . : MainActivity , .Settings , com.android.calculator2.Calculator
caps.setCapability("appActivity", "com.android.calculator2.Calculator");
Appium:
caps.setCapability(MobileCapabilityType.APP_ACTIVITY, "com.android.calculator2.Calculator");
|
appWaitActivity |
, Activity, , .
caps.setCapability("appWaitActivity","com.android.calculator2.Calculator");
Appium:
caps.setCapability(MobileCapabilityType.APP_WAIT_ACTIVITY,"com.android.calculator2.Calculator");
|
appWaitPackage |
, Android-, , .
caps.setCapability("appWaitPackage","com.example.android.myApp");
|
deviceReadyTimeout |
, ( ), . 5 .
caps.setCapability("deviceReadyTimeout","10");
Appium:
caps.setCapability(MobileCapabilityType.DEVICE_READY_TIMEOUT,"10");
|
enablePerformanceLogging |
Chrome driver performance logging. Chrome WebView. false
caps.setCapability("enablePerformanceLogging", "true");
|
androidDeviceReadyTimeout |
, , .
caps.setCapability("androidDeviceReadyTimeout","20");
|
androidDeviceSocket |
DevTools socket name. Chromium-embedding browser. ChromeDriver DevTools client. , chrome_DevTools_remote
caps.setCapability("androidDeviceSocket","chrome_DevTools_remote");
|
avd |
avd [Android virtual device] .
caps.setCapability("avd","AVD_NEXUS_5");
|
avdLaunchTimeout |
avd . 120000 .
caps.setCapability("avdLaunchTimeout","230000");
|
avdReadyTimeout |
, avd . 120000 .
caps.setCapability("avdReadyTimeout","240000");
|
avdArgs |
avd [startup options].
caps.setCapability("avdArgs","netfast");
|
autoWebviewTimeout |
( ), WebView context, , . 2000
caps.setCapability("autoWebviewTimeout","3000");
|
intentAction |
Intent action , activity. : android.intent.action.MAIN
caps.setCapability("intentAction","android.intent.action.VIEW");
|
intentCategory |
Intent activity. : android.intent.category.LAUNCHER
caps.setCapability("intentCategory","android.intent.category.APP_CONTACTS");
|
intentFlags |
, Activity. : 0x10200000
caps.setCapability("intentFlags","0x10200000");
|
intentFlags |
. : false
caps.setCapability("unicodeKeyboard","true");
|
resetKeyboard |
. : false
caps.setCapability("resetKeyboard","true");
|
iOS capabilities
|
|
calendarFormat |
iOS. :
caps.setCapability("calendarFormat"," Gregorian");
|
bundleId |
. :
caps.setCapability("bundleId"," io.appium.TestApp");
|
launchTimeout |
( ) . , Appium , .
caps.setCapability("launchTimeout","30000");
|
locationServicesEnabled |
location Services
caps.setCapability("locationServicesEnabled","false");
|
locationServicesAuthorized |
. true , - location services. bundleId . : false
caps.setCapability("locationServicesAuthorized","true");
|
autoAcceptAlerts |
, , .. : false
caps.setCapability("autoAcceptAlerts","true");
|
nativeInstrumentsLib |
native instruments
caps.setCapability("nativeInstrumentsLib","true");
|
nativeWebTap |
Safari tap. : false . viewport's size/ratio
caps.setCapability("nativeWebTap","false");
|
safariAllowPopups |
. Safari JavaScript
caps.setCapability("safariAllowPopups","false");
|
safariIgnoreFraudWarning |
. Safari , .
caps.setCapability("safariIgnoreFraudWarning","false");
|
safariOpenLinksInBackground |
. Safari .
caps.setCapability("safariOpenLinksInBackground","true");
|
keepKeyChains |
. / .
caps.setCapability("safariOpenLinksInBackground","true");
|
processArguments |
instruments.
caps.setCapability("processArguments","myflag");
|
interKeyDelay |
.
caps.setCapability("interKeyDelay","100");
|
Appium server
Appium- (iOS Android). , . HTTP-, NodeJS , Selenium Server, HTTP- . Appium-, npm. Appium GUI- .
http://appium.io. GUI- .
Appium , REST API. , API, , Java, C#, Ruby, Python . Appium WebDriver . , Appium WebDriver. - , Appium, WebDriver.
Appium , . .
, Appium, JSON wire protocol, desired capabilities . Appium- .
JSONWP Appium , . Appium , .
, , , Appium Appium
https://habrahabr.ru/post/331224/