How to integrate Appium studio community edition with Visual studio?

How to integrate Appium studio community edition with Visual studio? Could you please help me guys. My test framework is set up in Visual studio.

Hi Anoop

Simply export the C# Code to Visual Studio, and execute your tests from there

Thank you Tom , I want to know the .dll files for visual studio in appium client folder

Hi Tom

When I tried the solution you you mentioned , I’m getting error for below items

  1. Referencing Libraries
  2. While initializing the Android and IOS driver ,
  3. Defining capabilities

The Visual Studio add-on for SeeTestAutomation supplies C# project templates and integrated menus to allow the easy import of C# unit tests generated by SeeTestAutomation, modification and running, and the launch of HTML reports, all from within Visual Studio.

• Install the Visual Studio plug-in for SeeTestAutomation:
o Run the SeeTest.Plugin.VS2012.vsix extension file located in \clients\C#.

Issue: We couldn’t not find C# folder in that directory.

Please find the error screenshots

Hi Anoop, you need to add the appium driver (DLL) and NUnit (Dll) as a reference to your project

you can use a Nouget package, or download the dll
How to adda a package




https://blogs.msdn.microsoft.com/ganesh/2016/03/13/nativeapp-android-visualstudio/

Hi Tom,

I added all the DLL’s and still am unable to connect to Appium Studio

Thanks,
Nivedita

what kind of error do you see?

Dear Everyone,

I’m using Appium Studio for recording scripts that also provides the NUnit C# Code.
I’m running tests on Visual Studio.

While the code is as below, I have a question around Appium Studio’s Executor Agent. In other words, if I start the appium server from command line, the XPaths captured doesn’t work. However, when I start the Appium Studio’s Executor Agent and execute the tests from Visual Studio, the test works perfectly fine.

Look forward to your reply.

I had to make a few tweaks to the code generated from Appium Studio like that of Appium Options instead of desired capabilities…

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

namespace AppiumTestProject
{
public class APPIUM002LoginAndSynchronization
{
AndroidDriver driver;
AppiumOptions options = new AppiumOptions();

    [SetUp]
    public void InitDriver()
    {
        //DesiredCapabilities did not work and hence AppiumOptions. 
        options.PlatformName = "Android";
        options.AddAdditionalCapability("platformName", "Android");
        //options.AddAdditionalCapability(MobileCapabilityType.AutomationName, "UiAutomator2");
        options.AddAdditionalCapability("automationName", "UiAutomator2");
        options.AddAdditionalCapability("deviceName", "Pixel 3 XL");
        options.AddAdditionalCapability(MobileCapabilityType.Udid, "91FY17BQ9");
        options.AddAdditionalCapability(MobileCapabilityType.App, "C:\\Users\\RaghavanKasthuri\\AppData\\Roaming\\appiumstudio\\apk\\com.clearhorizon.chimedev.MainActivity.2.apk");
        options.AddAdditionalCapability("appPackage", "com.clearhorizon.chimedev");
        options.AddAdditionalCapability("appActivity", ".MainActivity");
        options.AddAdditionalCapability("instrumentApp", true);
        options.AddAdditionalCapability("noReset", "true");

        //driver = new AndroidDriver<AndroidElement>(new Uri("http://127.0.01:4723/wd/hub"), options);
        driver = new AndroidDriver<AndroidElement>(new Uri("http://localhost:4723/wd/hub"), options);

    }

    [Test]
    public void Synchronise()
    {
        driver.Context = "WEBVIEW_1";
        new WebDriverWait(driver, TimeSpan.FromSeconds(10)).Until(ExpectedConditions.ElementExists(By.XPath("xpath=//ion-col[@class=\"syncButton md hydrated\"]")));
        driver.FindElement(By.XPath("xpath=//ion-col[@class=\"syncButton md hydrated\"]")).Click();
        new WebDriverWait(driver, TimeSpan.FromSeconds(10)).Until(ExpectedConditions.ElementExists(By.XPath("//*[@nodeName='ION-RIPPLE-EFFECT' and @width>0]")));
        driver.FindElement(By.XPath("//*[@nodeName='ION-RIPPLE-EFFECT' and @width>0]")).Click();
        new WebDriverWait(driver, TimeSpan.FromSeconds(10)).Until(ExpectedConditions.ElementExists(By.Id("i0116")));
        driver.FindElement(By.Id("i0116")).SendKeys("rk@clhoz.com");
        new WebDriverWait(driver, TimeSpan.FromSeconds(10)).Until(ExpectedConditions.ElementExists(By.Id("idSIButton9")));
        driver.FindElement(By.Id("idSIButton9")).Click();
        new WebDriverWait(driver, TimeSpan.FromSeconds(10)).Until(ExpectedConditions.ElementExists(By.Id("i0118")));
        driver.FindElement(By.Id("i0118")).SendKeys("ITIndustry123");
        new WebDriverWait(driver, TimeSpan.FromSeconds(10)).Until(ExpectedConditions.ElementExists(By.Id("idSIButton9")));
        driver.FindElement(By.Id("idSIButton9")).Click();
        System.Threading.Thread.Sleep(300000);
        //driver.FindElement(By.XPath("//*[@nodeName='ION-CARD-HEADER' and ./*[@name='cloud-done']]"));
        Assert.Pass();
    }

    [TearDown]
    public void closeDriver()
    {
        driver.Quit();
    }
}

}