This is the second part of the series "Test automation on Android using Appium, C# and MSTest". If you missed the first part, Click here.
Open Visual Studio Ultimate (2010 or above) (I am using VS2012)
Create a unit Test project.
Install "Appium Web Driver" and "Selenium WebDriver" using NuGet package manager. (The easiest way)
If you don't want to use NuGet package manager, you can manually download appium dot net driver and selenium web driver c# libraries and add them to your solution
Your reference section should look like this.
Now open your UnitTest1.cs file and add following namespaces in your using section
Now watch your android phone, A calculator window will open on your android phone, button 2 will be tapped, then button + , then button 4 and then button =.
After that result will show 6 and your test case should ideally be passed. Make sure your Appium server is running. Appium window will show you all the logs.
Congratulations, you have just written your first automated test case in Appium and it is running on a real android device.
Coding Time
Now it is time to code.Open Visual Studio Ultimate (2010 or above) (I am using VS2012)
Create a unit Test project.
Install "Appium Web Driver" and "Selenium WebDriver" using NuGet package manager. (The easiest way)
If you don't want to use NuGet package manager, you can manually download appium dot net driver and selenium web driver c# libraries and add them to your solution
Your reference section should look like this.
Now open your UnitTest1.cs file and add following namespaces in your using section
using System; using System.Threading; using Microsoft.VisualStudio.TestTools.UnitTesting; using OpenQA.Selenium; using OpenQA.Selenium.Appium; using OpenQA.Selenium.Appium.Android; using OpenQA.Selenium.Remote;In your [TestInitialize] section, write this code.
[TestInitialize] public void BeforeAll() { 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", "4.3"); capabilities.SetCapability("appPackage", "com.android.calculator2"); capabilities.SetCapability("appActivity", "com.android.calculator2.Calculator"); driver = new AndroidDriver(new Uri("http://127.0.0.1:4723/wd/hub"), capabilities, TimeSpan.FromSeconds(180)); }in your [TestMethod], write this code
[TestMethod] public void TestCalculator() { var two = driver.FindElement(By.Name("2")); two.Click(); var plus = driver.FindElement(By.Name("+")); plus.Click(); var four = driver.FindElement(By.Name("4")); four.Click(); var equalTo = driver.FindElement(By.Name("=")); equalTo.Click(); var results = driver.FindElement(By.ClassName("android.widget.EditText")); Assert.AreEqual("6", results.Text); }The complete code should look like this.
using System; using System.Threading; using Microsoft.VisualStudio.TestTools.UnitTesting; using OpenQA.Selenium; using OpenQA.Selenium.Appium; using OpenQA.Selenium.Appium.Android; using OpenQA.Selenium.Remote; namespace AppiumSample { [TestClass] public class UnitTest1 { public AndroidDriver driver; [TestInitialize] public void BeforeAll() { 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", "4.3"); capabilities.SetCapability("appPackage", "com.android.calculator2"); capabilities.SetCapability("appActivity", "com.android.calculator2.Calculator"); driver = new AndroidDriver(new Uri("http://127.0.0.1:4723/wd/hub"), capabilities, TimeSpan.FromSeconds(180)); } [TestCleanup] public void AfterAll() { driver.Quit(); } [TestMethod] public void TestCalculator() { var two = driver.FindElement(By.Name("2")); two.Click(); var plus = driver.FindElement(By.Name("+")); plus.Click(); var four = driver.FindElement(By.Name("4")); four.Click(); var equalTo = driver.FindElement(By.Name("=")); equalTo.Click(); var results = driver.FindElement(By.ClassName("android.widget.EditText")); Assert.AreEqual("6", results.Text); }To run this test case, click on Test Menu > Windows > Test Explorer. A window will open on your left and it will list down the test cases. Select your desired test case and click run.
Now watch your android phone, A calculator window will open on your android phone, button 2 will be tapped, then button + , then button 4 and then button =.
After that result will show 6 and your test case should ideally be passed. Make sure your Appium server is running. Appium window will show you all the logs.
Congratulations, you have just written your first automated test case in Appium and it is running on a real android device.
Some Explanation
Most of the code is self explanatory. But I want your attention on these two lines.capabilities.SetCapability("appPackage", "com.android.calculator2"); capabilities.SetCapability("appActivity", "com.android.calculator2.Calculator");For every application you want to test, you must know its package name and app activity name. So to know about these attributes, you need to download a little android app on your phone. It is called apkInfo. It will show you the package name and activityname of any android app installed on your phone. Just pass these parameters here and that app will launch on your phone by automation code.