-

   rss_rss_hh_new

 - e-mail

 

 -

 LiveInternet.ru:
: 17.03.2011
:
:
: 51

:


Appium Essentials. 6

, 27 2017 . 20:23 +
, . Appium Essentials. :



:
  • Android
  • Android
  • Chrome, Gmail
  • iOS. Body Mass Index (BMI)
  • iOS
  • iOS. -



, , :
Android iOS
Java ( 7 ) Mac OS ( 10.7 )
Android SDK API, 17 Xcode ( 4.6.3 ; 5.1)
Android iOS [ ]
Chrome iOS
Eclipse [ Idea] SafariLauncher
TestNG ios-webkit-debug-proxy
Appium Java ( 7 )
Appium ( Java) Eclipse [ Idea]
Selenium Server Java- WebDriver TestNG
Apk Info app Selenium Server Java- WebDriver
Appium
Appium ( Java)

, Android USB.
, ,
adb devices

Android-. , adb-:

adb kill-server
adb start-server

Desired capabilities Android


1 , . , .
, :
import java.io.File;
import org.openqa.selenium.remote.DesiredCapabilities;
import io.appium.java_client.remote.MobileCapabilityType;

DC:
DesiredCapabilities caps = new DesiredCapabilities();
File app=new File("path of the apk");//    apk
caps.setCapability(MobileCapabilityType.APP,app);//   ,     
caps.setCapability(MobileCapabilityType.PLATFORM_VERSION, "4.4");// Android
caps.setCapability(MobileCapabilityType.PLATFORM_NAME, "Android");// OS
caps.setCapability(MobileCapabilityType.DEVICE_NAME, "Moto X");//    
caps.setCapability(MobileCapabilityType.APP_PACKAGE, "   (  ,  apk info app)"); 
caps.setCapability(MobileCapabilityType.APP_ACTIVITY, ",     (    apk info app)");

Desired capabilities Android -


-, , , : APP, APP PACKAGE APP ACTIVITY, .
, :
import java.io.File;
import org.openqa.selenium.remote.DesiredCapabilities;
import io.appium.java_client.remote.MobileCapabilityType;

DC:
DesiredCapabilities caps = new DesiredCapabilities();
caps.setCapability(MobileCapabilityType.PLATFORM_VERSION, "4.4");// Android
caps.setCapability(MobileCapabilityType.PLATFORM_NAME, "Android");// OS
caps.setCapability(MobileCapabilityType.DEVICE_NAME, "Moto X");//    
caps.setCapability(MobileCapabilityType.BROWSER_NAME, "Chrome"); //  Chrome

, .
:
import io.appium.java_client.android.AndroidDriver;
import java.net.URL;

:
AndroidDriver driver = new AndroidDriver (new URL("http://127.0.0.1:4723/wd/hub"), caps);// ,   Appium-

Android.

provisional profile, SafariLauncher ios-webkit-debug-proxy


iOS, .
Provisional profile
, iOS. iOS Developer Program
, , .
:
  1. iOS Mac
  2. Xcode ( 6) Window -> Devices
  3. Show Provisional Profiles
  4. +, , Done

SafariLauncher ios-webkit-debug-proxy
SafariLauncher Safari . SafariLauncher iOS, Safari:
  1. Xcode SafariLauncher
  2. build
  3. SafariLauncher Appium.dmg; :
    1. Appium.dmg
    2. Show Package Contents Contents/Resources/node_modules/appium/build/SafariLauncher
    3. SafariLauncher.zip
    4. submodules/SafariLauncher/build/Release-iphoneos SafariLauncher .
    5. submodules SafariLauncher.zip

ios-webkit-debug-proxy Mac, web-view. , brew
brew install ios-webkit-debug-proxy
.

Desired capabilities iOS


1 , . , .
, :
import java.io.File;
import org.openqa.selenium.remote.DesiredCapabilities;
import io.appium.java_client.remote.MobileCapabilityType;

DC:
DesiredCapabilities caps = new DesiredCapabilities();
File app=new File("path of the .app");
caps.setCapability(MobileCapabilityType.APP,app);
caps.setCapability(MobileCapabilityType.PLATFORM_VERSION, "8.1");
caps.setCapability(MobileCapabilityType.PLATFORM_NAME, "iOS");//
caps.setCapability(MobileCapabilityType.DEVICE_NAME, "iPad");//
caps.setCapability("udid","Id  ");//UDID

Desired capabilities iOS -


. : APP, APP PACKAGE APP ACTIVITY. .
, :
import java.io.File;
import org.openqa.selenium.remote.DesiredCapabilities;
import io.appium.java_client.remote.MobileCapabilityType;

DC:
DesiredCapabilities caps = new DesiredCapabilities();
caps.setCapability(MobileCapabilityType.PLATFORM_VERSION, "8.1");
caps.setCapability(MobileCapabilityType.PLATFORM_NAME, "iOS");
caps.setCapability(MobileCapabilityType.DEVICE_NAME,"iPad");
caps.setCapability("udid","UDID  ");
caps.setCapability(MobileCapabilityType.BROWSER_NAME,"Safari"); //  Safari

, .
:
import io.appium.java_client.ios.IOSDriver;
import java.net.URL;

:
IOSDriver driver = new IOSDriver (new URL("http://127.0.0.1:4723/wd/hub"),caps); //,  Appium-

iOS.
TestNG :
import io.appium.java_client.ios.IOSDriver;
import io.appium.java_client.remote.MobileCapabilityType;
import java.io.File;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.concurrent.TimeUnit;
import org.openqa.selenium.remote.DesiredCapabilities;
import org.testng.annotations.AfterClass;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;

public class TestAppIication {
	IOSDriver driver;
	@BeforeClass //     
	public void setUp() throws MalformedURLException{
		DesiredCapabilities caps = new DesiredCapabilities();
		File app=new File("path of the .app");
		caps.setCapability(MobileCapabilityType.APP,app);
		caps.setCapability(MobileCapabilityType.PLATFORM_VERSION, "8.1");
		caps.setCapability(MobileCapabilityType.PLATFORM_NAME, "iOS");
		caps.setCapability(MobileCapabilityType.DEVICE_NAME,"iPad");
		caps.setCapability("udid","UDID  ");
		caps.setCapability(MobileCapabilityType.BROWSER_NAME, "Safari");// ,    -
		driver = new IOSDriver (new URL("http://127.0.0.1:4723/wd/hub"), caps);
		driver.manage().timeouts().implicitlyWait(30,TimeUnit.SECONDS);
	}
	@Test
	public void testExample(){
		//  
	}
	@AfterClass
	public void tearDown(){
		driver.closeApp();
		//driver.quit(); // ,    -
	}
}


Android


Android, , ( ), avd.
Android:

  1. desired capabilities, dialer
    caps.setCapability(MobileCapabilityType.APP_PACKAGE, "com.android.dialer");
    caps.setCapability(MobileCapabilityType.APP_ACTIVITY, "com.android.dialer.DialtactsActivity");
  2. dial pad. AccessibityId
    WebElement dialPad= driver.findElementByAccessibilityId("dial pad"));

  3. dialPad.click();
  4. . , 0-9 name
    for(int n=0;n<10;n++){
    	driver.findElement(By.name(""+n+"")).click();
    }
  5. , ,
  6. . AccessibilityId:
    WebElement dial= driver.findElementByAccessibilityId("dial"));
  7. :
    dial.click();
  8. , TestNG, :
    public class TestAppIication {
    	AndroidDriver driver;
    	@BeforeClass
    	public void setUp() throws MalformedURLException{
    		DesiredCapabilities caps = new DesiredCapabilities();
    		caps.setCapability(MobileCapabilityType.PLATFORM_VERSION, "4.4");
    		caps.setCapability(MobileCapabilityType.PLATFORM_NAME, "Android");
    		caps.setCapability(MobileCapabilityType.DEVICE_NAME,"Moto X");//I am using Moto X as Real Device
    		caps.setCapability(MobileCapabilityType.APP_PACKAGE, "com.android.dialer");
    		caps.setCapability(MobileCapabilityType.APP_ACTIVITY, "com.android.dialer.DailtactsActivity");
    		driver = new AndroidDriver (new URL("http://127.0.0.1:4723/wd/hub"), caps);
    		driver.manage().timeouts().implicitlyWait(30,TimeUnit.SECONDS);
    	}
    	@Test
    	public void testExample(){
    		WebElement dialPad=driver.findElementByAccessibilityId("dial pad");
    		dialPad.click();
    		for(int n=0;n<10;n++){
    			driver.findElement(By.name(""+n+"")).click();
    		}
    		WebElement dial=driver.findElementByAccessibilityId("dial");
    		dial.click();
    	}
    	@AfterClass
    	public void tearDown(){
    		driver.closeApp();
    	}
    }

iOS


BMI

. , :
  1. desired capabilities,
    File app=new File("/Users/mhans/appium/ios/BmiCalc.app");//You can change it with your app address
    caps.setCapability(MobileCapabilityType.APP,app);//To set the app path
  2. . Xpath
    WebElement height=driver.findElement(By.xpath("(//UIATextField)[2]"));
    WebElement weight=driver.findElement(By.xpath("(//UIATextField)[4]"));
    
  3. calculate. name:
    WebElement calculateBMI=driver.findElement(By.name("Calculate BMI"));
  4. height.sendKeys("1.82");
  5. weight.sendKeys("75");
  6. calculateBMI.click();
  7. , TestNG, :
    public class TestAppIication {
    	IOSDriver driver;
    	@BeforeClass
    	public void setUp() throws MalformedURLException{
    		File app=new File("/Users/mhans/appium/ios/BmiCalc.app");//You can change it with your app address
    		DesiredCapabilities caps = new DesiredCapabilities();
    		caps.setCapability(MobileCapabilityType.APP,app);
    		caps.setCapability(MobileCapabilityType.PLATFORM_VERSION, "8.1");
    		caps.setCapability(MobileCapabilityType.PLATFORM_NAME, "iOS");
    		caps.setCapability(MobileCapabilityType.DEVICE_NAME,"iPad");
    		caps.setCapability("udid","Real Device Id ");
    		driver = new IOSDriver (new URL("http://127.0.0.1:4723/wd/hub"), caps);
    		driver.manage().timeouts().implicitlyWait(30,TimeUnit.SECONDS);
    	}
    	@Test
    	public void testExample(){
    		WebElement height=driver.findElement(By.xpath("(//UIATextField)[2]"));
    		height.sendKeys("1.82");
    		WebElement weight=driver.findElement(By.xpath("(//UIATextField)[4]"));
    		weight.sendKeys("75");
    		WebElement calculateBMI=driver.findElement(By.name("Calculate BMI"));
    		calculateBMI.click();
    	}
    	@AfterClass
    	public void tearDown(){
    		driver.closeApp();
    	}
    }
    



Android


, Gmail. , , Chrome , , / SignIn

  1. desired capabilities, Chrome
    caps.setCapability(MobileCapabilityType.BROWSER_NAME, "Chrome");
  2. driver.get("https://www.gmail.com");
  3. username. name
    WebElement username=driver.findElement(By.name("Email"));
  4. username.sendKeys("test");
  5. , password. name
    WebElement password=driver.findElement(By.name("Passwd"));
  6. password.sendKeys("test");
  7. SignIn. name
    WebElement signIn=driver.findElement(By.name("signIn"));
  8. signIn.click();
  9. , TestNG, :
    public class TestAppIication {
    	AndroidDriver driver;
    	@BeforeClass
    	public void setUp() throws MalformedURLException {
    		DesiredCapabilities caps = new DesiredCapabilities();
    		caps.setCapability(MobileCapabilityType.BROWSER_NAME, "Chrome");
    		caps.setCapability(MobileCapabilityType.PLATFORM_VERSION, "4.4");
    		caps.setCapability(MobileCapabilityType.PLATFORM_NAME, "Android");
    		caps.setCapability(MobileCapabilityType.DEVICE_NAME,"Moto X");
    		driver = new AndroidDriver (new URL("http://127.0.0.1:4723/wd/hub"), caps);
    		driver.manage().timeouts().implicitlyWait(30,TimeUnit.SECONDS);
    	}
    	@Test
    	public void testExample(){
    		driver.get("https://www.gmail.com");
    		WebElement username=driver.findElement(By.name("Email"));
    		username.sendKeys("test");
    		WebElement password=driver.findElement(By.name("Passwd"));
    		password.sendKeys("test");
    		WebElement signIn=driver.findElement(By.name("signIn"));
    		signIn.click(); 
    	}
    	@AfterClass
    	public void tearDown(){
    		driver.quit();
    	}
    }
    

iOS


, Google. , , , , Search

  1. desired capabilities, Safari
    caps.setCapability(MobileCapabilityType.BROWSER_NAME, "Safari");
  2. driver.get("https://www.google.com");
  3. searchBox. name
    WebElement searchBox=driver.findElement(By.name("q"));
  4. searchBox.sendKeys("Appium for mobile automation");
  5. , :
    ios_webkit_debug_proxy -c 2e5n6f615z66e98c1d07d22ee09658130d345443:27753 d

    2e5n6f615z66e98c1d07d22ee09658130d345443 UDID . 27753
  6. , Web Inspector (Settings | Safari | Advanced) SafariLauncher
  7. , TestNG, :
    public class TestAppIication {
    	IOSDriver driver;
    	@BeforeClass
    	public void setUp() throws MalformedURLException{
    		DesiredCapabilities caps = new DesiredCapabilities();
    		caps.setCapability(MobileCapabilityType.BROWSER_NAME, "Safari");
    		caps.setCapability(MobileCapabilityType.PLATFORM_VERSION, "8.1");
    		caps.setCapability(MobileCapabilityType.PLATFORM_NAME, "iOS");
    		caps.setCapability(MobileCapabilityType.DEVICE_NAME, "iPad");
    		caps.setCapability("udid","Real Device Identifier");
    		driver = new IOSDriver (new URL("http://127.0.0.1:4723/wd/hub"), caps);
    		driver.manage().timeouts().implicitlyWait(30,TimeUnit.SECONDS);
    	}
    	@Test
    	public void testExample(){
    		driver.get("https://www.google.com");
    		WebElement searchBox=driver.findElement(By.name("q"));
    		searchBox.sendKeys("Appium for mobile automation");
    	}
    	@AfterClass
    	public void tearDown(){
    		driver.quit();
    	}
    }
    



Android


, Hybridtestapp
, , . Hybridtestapp, .

:
  1. desired capabilities,
    File app=new File("C:\\Appium_test\\HybridtestApp.apk");// (On window platform)
    caps.setCapability(MobileCapabilityType.APP,app);
    caps.setCapability(MobileCapabilityType.APP_PACKAGE, "com.example.hybridtestapp");
    caps.setCapability(MobileCapabilityType.APP_ACTIVITY, "com.example.hybridtestapp.MainActivity");
  2. , WebView
    Set contexts = driver.getContextHandles();
    for (String context : contexts) {
    	System.out.println(context); //  
    }

  3. driver.context("WEBVIEW_com.example.hybridtestapp");

    driver.context((String) contextNames.toArray()[1]);
  4. WebView, First Name. name
    WebElement firstName=driver.findElement(By.name("fname"));
    firstName.sendKeys("test");
  5. Last Name
    WebElement lastName=driver.findElement(By.name("lname"));
    lastName.sendKeys("test");
    

  6. WebElement age=driver.findElement(By.name("age"));
    age.sendKeys("26");
    
    WebElement username=driver.findElement(By.name("username"));
    username.sendKeys("appiumTester");
    
    WebElement password=driver.findElement(By.id("psw"));
    password.sendKeys("appium@123");
    

  7. Register
    WebElement registerButton=driver.findElement(By.id("register"));
    registerButton.click();
    
  8. , TestNG, :
    public class TestAppIication {
    	AndroidDriver driver;
    	@BeforeClass
    	public void setUp() throws MalformedURLException{
    		File app=new File("C:\\Appium_test\\HybridtestApp.apk");
    		caps.setCapability(MobileCapabilityType.APP,app);
    		DesiredCapabilities caps = new DesiredCapabilities();
    		caps.setCapability(MobileCapabilityType.PLATFORM_VERSION, "4.4");
    		caps.setCapability(MobileCapabilityType.PLATFORM_NAME, "Android");
    		caps.setCapability(MobileCapabilityType.DEVICE_NAME, "Moto X");
    		caps.setCapability(MobileCapabilityType.AUTOMATION_NAME, "Appium");// Selendroid   android  4.4
    		caps.setCapability(MobileCapabilityType.APP_PACKAGE, "com.example.hybridtestapp");
    		caps.setCapability(MobileCapabilityType.APP_ACTIVITY, "com.example.hybridtestapp.MainActivity");
    		driver = new AndroidDriver (new URL("http://127.0.0.1:4723/wd/hub"), caps);
    		driver.manage().timeouts().implicitlyWait(30,TimeUnit.SECONDS);
    	}
    	
    	@Test
    	public void testExample(){
    		Set contexts = driver.getContextHandles();
    		for (String context : contexts) {
    			System.out.println(context);
    		}
    		driver.context((String) contexts.toArray()[1]);
    		WebElement firstName=driver.findElement(By.name("fname"));
    		firstName.sendKeys("test");
    		WebElement lastName=driver.findElement(By.name("lname"));
    		lastName.sendKeys("test");
    		WebElement age=driver.findElement(By.name("age"));
    		age.sendKeys("26");
    		WebElement username=driver.findElement(By.name("username"));
    		username.sendKeys("appiumTester");
    		WebElement password=driver.findElement(By.id("psw"));
    		password.sendKeys("appium@123");
    		WebElement registerButton=driver.findElement(By.id("register"));
    		registerButton.click();
    	}
    	@AfterClass
    	public void tearDown(){
    		driver.closeApp();
    	}
    }
    

iOS


WebViewApp

:
  1. desired capabilities,
    File app=new File("/Users/mhans/appium/ios/WebViewApp.app");
    caps.setCapability(MobileCapabilityType.APP,app);

  2. WebElement editBox=driver.findElement(By.className("UIATextField"));
    editBox.sendKeys("www.google.com");
  3. Go
    WebElement goButton=driver.findElement(By.name("Go"));
    goButton.click();
  4. , WebView
    Set contexts = driver.getContextHandles();
    for (String context : contexts) {
    	System.out.println(context);
    }

  5. driver.context("WEBVIEW_com.example.testapp");

    driver.context((String) contextNames.toArray()[1]);
  6. . google. Images:
    WebElement images=driver.findElement(By.linkText("Images"));
    images.click();
  7. ,
    ios_webkit_debug_proxy -c :27753 d

    27753
  8. , TestNG, :
    public class TestAppIication {
    	IOSDriver driver;
    	@BeforeClass
    	public void setUp() throws MalformedURLException{
    		DesiredCapabilities caps = new DesiredCapabilities();
    		File app=new File("/Users/mhans/appium/ios/WebViewApp.app");
    		caps.setCapability(MobileCapabilityType.APP,app);
    		caps.setCapability(MobileCapabilityType.PLATFORM_VERSION, "8.1");
    		caps.setCapability(MobileCapabilityType.PLATFORM_NAME, "iOS");
    		caps.setCapability(MobileCapabilityType.DEVICE_NAME, "iPad");
    		caps.setCapability("udid","Real Device Identifier");
    		driver = new IOSDriver (new URL("http://127.0.0.1:4723/wd/hub"), caps);
    		driver.manage().timeouts().implicitlyWait(30,TimeUnit.SECONDS);
    	}
    	@Test
    	public void testExample(){
    		WebElement editBox=driver.findElement(By.className("UIATextField"));
    		editBox.sendKeys("https://www.google.com");
    		WebElement goButton=driver.findElement(By.name("Go"));
    		goButton.click();
    		Set contexts = driver.getContextHandles();
    		for (String context : contexts) {
    			System.out.println(context);
    		}
    		driver.context((String) contexts.toArray()[1]);
    		WebElement images=driver.findElement(By.linkText("Images"));
    		images.click();
    	}
    	@AfterClass
    	public void tearDown(){
    		driver.closeApp();
    	}
    }
    



. , , , , .
Original source: habrahabr.ru (comments, light).

https://habrahabr.ru/post/333546/

:  

: [1] []
 

:
: 

: ( )

:

  URL