Appium with C# : Session 4 : Appium Capabilities configuration on App.Config file C#


While we are creating any C# project on Microsoft Visual studio by default one App.config file will be created.Where we are storing the data as "Key" & "Value" pair.
So, We can add our own customize configuration.Frequently changing the data for different scenarios is not good.Instead of changing data every time ,it will be good to store the data in one place to perform one time setup and will make it re-usable. 

Below Example:
Where I stored all the capabilities and .apk files to initiate an Appium session for mobile automation


<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <startup> 
        <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
    </startup>
  <appSettings>
    <add key="deviceName" value="emulator-5554"/>
    <add key="Version" value="6.0"/>
    <add key="BrowserName" value="Android"/>
    <add key="Platform" value="Android"/>
    <add key="HealthyfiPackage" value="com.healthifyme.basic"/>
    <add key="HealthyfiActivity" value="com.healthifyme.basic.activities.NewLoginSignupActivity"/>
    <add key="ContactPackage" value="com.android.contacts"/>
    <add key="ContactActivity" value="com.android.contacts.activities.PeopleActivity"/>
    <add key="BigBasketPackage" value="com.bigbasket.mobileapp"/>
    <add key="BigBasketActivities" value="com.bigbasket.mobileapp.activity.SplashActivity"/>
    <add key="CalcualtorPackage" value="com.android.calculator2"/>
    <add key="CalculatorActivities" value="com.android.calculator2.Calculator"/>
    <add key="MessagePackage" value="com.android.messaging"/>
    <add key="MessageActivities" value="com.android.calculator2.Calculator"/>
    <add key="URL" value="http://127.0.0.1:4723/wd/hub"/>
    <add key="app1" value="C:\\Users\\105798\\testapplications\\HealthifyMe.apk"/>
    <add key="app2" value="C:\\Users\\105798\\testapplications\\bigbasket_com.bigbasket.mobileapp.apk"/>
   
  </appSettings>
</configuration>



Below Program for Generic function class :using System;KeyFunctions.cs


using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Configuration;
using OpenQA.Selenium.Remote;
using OpenQA.Selenium.Appium;
using OpenQA.Selenium.Appium.Android;
using OpenQA.Selenium;
using NUnit.Framework;



namespace Appium__Automation
{
  public class KeyFunctions
    {
  
      public static AppiumDriver<AndroidElement> driver;

public void CapabilitiesBigBasket(DesiredCapabilities capabilities)
      {
          
          capabilities.SetCapability("deviceName", ConfigurationManager.AppSettings["deviceName"]);
          capabilities.SetCapability(CapabilityType.Version, ConfigurationManager.AppSettings["Version"]);
          capabilities.SetCapability(CapabilityType.BrowserName, ConfigurationManager.AppSettings["BrowserName"]);
          capabilities.SetCapability(CapabilityType.Platform, ConfigurationManager.AppSettings["Platform"]);
          capabilities.SetCapability("appPackage", ConfigurationManager.AppSettings["BigBasketPackage"]);
          capabilities.SetCapability("appActivity", ConfigurationManager.AppSettings["BigBasketActivities"]);
          capabilities.SetCapability("app", ConfigurationManager.AppSettings["app2"]);
          

      }
  }

}


Initializing BigBasket application program



using NUnit.Framework;
using OpenQA.Selenium;
using OpenQA.Selenium.Appium;
using OpenQA.Selenium.Appium.Android;
using OpenQA.Selenium.Remote;
using OpenQA.Selenium.Support.PageObjects;
using System;
using System.Collections.Generic;
using System.Configuration;
using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;


namespace Appium__Automation.TestCases.AndroidApps.BigBasket
{
    public class BigBasketFunctionalities : ITestCase
    {
        public static AppiumDriver<AndroidElement> driver;
        KeyFunctions KeyGeneric = new KeyFunctions();
        DesiredCapabilities capabilities = new DesiredCapabilities();
      

        public void Execute()
        {
                 // BigBasket LogIn
                KeyGeneric.CapabilitiesBigBasket(capabilities);

//CapabilitiesBigBasket () : Function created in KeyFunctions class. 

                driver = new AndroidDriver<AndroidElement>(new Uri(ConfigurationManager.AppSettings["URL"]), capabilities);

}
}
}

Note:
1. How to add ConfigurationManager on your c# project.

Ans: Right-click, Add Reference... In the .NET tab, find the "System.Configuration" component name and click OK.

Otherwise you will face error like" configuration manager doesn't exist".

Copyright © 2017 qatoolsguide.blogspot.com || ALL RIGHTS RESERVED