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?
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
};