How to set up Appium in C#

Hello, I don’t know why but I am not able to initiate Appium Android Driver.
Maybe something is called badly or is missing.

But I would like to write a standalone script which would have be fully automated.
Can someone help me pls? :slight_smile:

namespace Test

{
    using NUnit.Framework;
    using System;
    using OpenQA.Selenium;
    using OpenQA.Selenium.Appium;
    using OpenQA.Selenium.Appium.Interfaces;
    using OpenQA.Selenium.Appium.MultiTouch;
    using OpenQA.Selenium.Interactions;
    using OpenQA.Selenium.Remote;
    using OpenQA.Selenium.Appium.Android;

        public class TestSuite
        {
            private AppiumDriver driver;
            private static Uri testServerAddress = new Uri("http://192.168.1.13:4723"); // If Appium is running locally
            static void Main(string[] args)
    {
        var appiumOptions = new AppiumOptions();
        appiumOptions.AddAdditionalCapability("platformName", "Android");
        appiumOptions.AddAdditionalCapability("platformVersion", "14");
        appiumOptions.AddAdditionalCapability("deviceName", "emulator-5554");
        appiumOptions.AddAdditionalCapability("automationName", "UiAutomator2");
        appiumOptions.AddAdditionalCapability("newCommandTimeout", 60);
        appiumOptions.AddAdditionalCapability("noReset", false);
        appiumOptions.AddAdditionalCapability("fullReset", false);
        appiumOptions.AddAdditionalCapability("eventTimings", true);
        appiumOptions.AddAdditionalCapability("printPageSourceOnFindFailure", true);
        appiumOptions.AddAdditionalCapability("appPackage", "szif.gtfoto");
        appiumOptions.AddAdditionalCapability("appActivity", "StartActivity");
        appiumOptions.AddAdditionalCapability("version", "2.0.1");
        appiumOptions.AddAdditionalCapability("automationVersion", "2.29.4");

        Uri url = new Uri("http://192.168.1.13:4723");

        AppiumDriver<AndroidElement> driver =
            new AndroidDriver<AndroidElement>(url, appiumOptions);
        driver.Manage().Timeouts().ImplicitWait = TimeSpan.FromSeconds(20);

        try
        {
            // Find and click the GTFoto app
            AndroidElement gtFotoApp =
                driver.FindElementByAccessibilityId("SZIF GTFoto");
            gtFotoApp.Click();

            Thread.Sleep(5000); // Wait for 5 seconds
            driver.Quit();
        }
        catch (Exception ex)
        {
            Console.WriteLine("An error occurred: " + ex.Message);
            driver.Quit();
        }
    }
  }
}

Changing credentials, downloading all possible credentials and changing url. With Inspector and by PowerShell I have successfully loged into the application and can get elements from it.

But I am unable to load and initiate Appium i nVisual Studion even after few try outs.

Application will be running on Virtual Machine prepared in Android Studio.

And is there a way to make it fully automatically something like that:

using System; 
using System.Diagnostics; 
using System.Threading; 
using OpenQA.Selenium; 
using OpenQA.Selenium.Appium; 
using OpenQA.Selenium.Appium.Android;

class Program {
    static void Main(string[] args)
    {
        // Start the Appium server using PowerShell
        Process.Start("powershell", "Start-Process appium");

        // Wait for Appium server to start 
        Thread.Sleep(15000);

        // Start Android Studio using its executable path
        Process.Start("C:\\Program Files\\Android\\Android Studio\\bin\\studio64.exe");


        // Wait for Android Studio to initialize 
        Thread.Sleep(30000);

        // Start the virtual Android device using ADB
        ExecuteAdbCommand("start-server");
        ExecuteAdbCommand("-s emulator-name emu kill");
        ExecuteAdbCommand("-s emulator-name emu start");

        // Wait for the virtual Android device to boot 
        Thread.Sleep(120000);

        // Initialize the Appium driver for the test suite
        var appiumOptions = new AppiumOptions();
        

        Uri url = new Uri("http://127.0.0.1:4723");

        AppiumDriver<AndroidElement> driver =
            new AndroidDriver<AndroidElement>(url, appiumOptions);
        driver.Manage().Timeouts().ImplicitWait = TimeSpan.FromSeconds(20);

        try
        {
            // Find and click the GTFoto app
            AndroidElement gtFotoApp =
                driver.FindElementByAccessibilityId("SZIF GTFoto");
            gtFotoApp.Click();

            Thread.Sleep(5000); // Wait for 5 seconds
            driver.Quit();
        }
        catch (Exception ex)
        {
            Console.WriteLine("An error occurred: " + ex.Message);
            driver.Quit();
        }
    }

    static void ExecuteAdbCommand(string arguments)
    {
        ProcessStartInfo startInfo = new ProcessStartInfo
        {
            FileName = "adb", // Assuming adb is in the system PATH
            Arguments = arguments,
            RedirectStandardOutput = true,
            UseShellExecute = false,
            CreateNoWindow = true
        };

@Pavel_Bambuch Looks like you are using an old Appium dotnet client version.
First, try to update your client to 5.0 RC
Secondly, I suggest you provide the error/ Exceptions you are getting.