Android CI and Appium

Post on 19-Jan-2017

492 views 1 download

Transcript of Android CI and Appium

Copyright © SELA Software & Education Labs, Ltd. | 14-18 Baruch Hirsch St., Bnei Brak 51202, Israel | www.selagroup.com

Mobile CI & Appium

Oren AshkenazyMail: orena@sela.co.ilBlog: http://blogs.microsoft.co.il/oren604/

What is Xamarin?What is Continues Integration?Getting your APK for google storeDeploy APK (Emulator)TFS Build Template IntegrationWhy Appium?Finding the objectsAppium Project DemoWebDriver Common CommandsAndroid Emulators

Agenda

70%-90% Shared Code

Xamarin Intro

Continuous Integration

Create a Private Key (Java SDK):$ keytool -genkey -v -keystore <filename>.keystore -alias <key-name> -keyalg RSA -keysize 2048 -validity 10000

Compile The Project:Msbuild.exe MyAwesomeApp.sln /t:PackageForAndroid

Sign the APK using (Java SDK): $ jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore xample.keystore MyAwesomeApp.apk publishingdoc

Zipalign the APK (Android SDK Build Tools):

zipalign –MyAwesomeApp.apk MyAwesomeApp-Aligned.apk

Store Ready – The Commands

Uninstall Previous Installation: adb <machineName> uninstall <name of package/application>

Install New Package: adb <machineName> install MyAwesomeApp-Aligned.apk

*adb = Android Debug Bridge

ADB Deploy & Install

TFS Build Template

Web/Native/Hybrid AppsSelenium Based FrameworkCross Platform (IOS/Android/WP)Open SourceEasy Setup & Configuration

Why Appium?

Appium Architecture Web Driver Script

Appium Server (Node.JS)

Automation commands are sent via JSON 1

2Appium Sever invoke commands on devices

3

Appium Server logs the result to console4

Client sends back notification to the server

4.2 +

System RequirementsJAVA SDKAndroid SDKAppium ServerAndroid Device (Real/Emulator) with Android 4.2+ADB Interface Drivers

Find Android ObjectsUIAutomation Viewer (Under Android SDK Tools)

Scans UI objectsGet Xpath hierarchy

Demo

UIAutomationViewer

Setting The Test ProjectRequired Packages:

MS Unit Test or NunitAppium WebDriverSelenium WebDriver

Demo

Hello Appium

Test Setup – here we’ll setup the application and driver variables

[TestInitialize] public void TestInit() { DesiredCapabilities capabilities = new DesiredCapabilities(); capabilities.SetCapability("device", "Android"); capabilities.SetCapability(CapabilityType.Platform, "Windows"); capabilities.SetCapability("deviceName", "H30-U10"); capabilities.SetCapability("platformName", "Android"); capabilities.SetCapability("platformVersion", "5.02"); capabilities.SetCapability("appPackage", "com.appName"); capabilities.SetCapability("appActivity", "com.appName.Main"); driver = new AndroidDriver(new Uri("http://127.0.0.1:4723/wd/hub"), capabilities,

TimeSpan.FromSeconds(180)); }

TestInitialize

Test Setup – here we’ll setup the application and driver variables

[TestInitialize] public void TestInit() { DesiredCapabilities capabilities = new DesiredCapabilities(); capabilities.SetCapability("device", "Android"); capabilities.SetCapability(CapabilityType.Platform, "Windows"); capabilities.SetCapability("deviceName", "H30-U10"); capabilities.SetCapability("platformName", "Android"); capabilities.SetCapability("platformVersion", "5.02"); capabilities.SetCapability("appPackage", "com.appName"); // capabilities.SetCapability("appActivity", "com.appName.Main");

capabilities.SetCapability("app", @“C:\Apps\com.mobile.AppName-Signed.apk"); driver = new AndroidDriver(new Uri("http://127.0.0.1:4723/wd/hub"), capabilities,

TimeSpan.FromSeconds(180)); }

TestInitialize – app install

var tabs = driver.FindElements(By.Id("com.whatsapp:id/tab"));

foreach (var tab in tabs) { if (tab.Text == "CHATS") { tab.Click(); } }

driver.FindElement(By.Id("com.whatsapp:id/menuitem_new_conversation")).Click(); var contacts = driver.FindElements(By.Id("com.whatsapp:id/contactpicker_row_name")); driver.FindElement(By.Id("android:id/search_src_text")).SendKeys(“Contact"); driver.FindElement(By.Id("com.whatsapp:id/contactpicker_row_content")).Click(); driver.FindElement(By.Id("com.whatsapp:id/entry")).SendKeys("Hello"); driver.FindElement(By.Id("com.whatsapp:id/send")).Click();

TestMethod

WebDriver Basic MethodsActions

Clear();Click();FindElement(string);Array/List FindElements(string,string…);SendKeys(string);Submit();

ExploreGetAttribute();GetCSSValue();Enable();Selected();Size();Text();

The need for speed …We need fast emulators!!

AVD Configuration

Android Emulators

Questions