Warning: fopen(/tmp/SghXTngBZPli-ATj00a.tmp): failed to open stream: Disk quota exceeded in /home/executea/public_html/blog/wp-admin/includes/class-wp-filesystem-ftpext.php on line 139
Warning: unlink(/tmp/SghXTngBZPli-ATj00a.tmp): No such file or directory in /home/executea/public_html/blog/wp-admin/includes/class-wp-filesystem-ftpext.php on line 142
In this post we will start to write a very simple code using Appium with C# to automate android mobile application.
Since this post is more like the posts we discussed in Appium with Java in our ExecuteAutomation blog and video series, I am not going to write much on the explanation of nitty-gritty details in this post.
Here is the complete video of the discussion
Here is the complete code from the above video discussion.
[TestClass]
public class UnitTest1
{
//Creating instance for Appium driver
AppiumDriver driver;
[TestMethod]
public void TestMethod1()
{
DesiredCapabilities cap = new DesiredCapabilities();
cap.SetCapability("deviceName", "donatello");
cap.SetCapability("appActivity", "com.example.calculator");
//Launch the Android driver
driver = new AndroidDriver(new Uri("http://127.0.0.1:4723/wd/hub"), cap);
Assert.IsNull(driver.Context);
}
}
Thanks for reading the post and watching the video !!!
Please leave your comments and let me know if there is anything I should update in this post.
Thanks,
Karthik KK
Post Author:
Karthik kk
17 Replies to “Writing simple code using Appium with C#”
Hi Karthik,
Thanks for all the info about Appium on your site. Can you please send me sample code about how to launch a mobile web page in chrome. Am using samsung galaxy tablet and want to test our website in the chrome browser built in it. It would be of great help if you do this. Thanks a ton
Hi Karthik ,I tried the same code but I get a SocketException.
The complete message is given : Any suggestions ? TIA.
Test Name: TestMethod1
Test FullName: Training_Appium.UnitTest1.TestMethod1
Test Source: D:\Work\Training\Training_Appium\Training_Appium\UnitTest1.cs : line 16
Test Outcome: Failed
Test Duration: 0:00:02.484985
Result StackTrace:
at OpenQA.Selenium.Remote.RemoteWebDriver.UnpackAndThrowOnError(Response errorResponse)
at OpenQA.Selenium.Remote.RemoteWebDriver.Execute(String driverCommandToExecute, Dictionary`2 parameters)
at OpenQA.Selenium.Appium.AppiumDriver`1.Execute(String driverCommandToExecute, Dictionary`2 parameters)
at OpenQA.Selenium.Remote.RemoteWebDriver.StartSession(ICapabilities desiredCapabilities)
at OpenQA.Selenium.Remote.RemoteWebDriver..ctor(ICommandExecutor commandExecutor, ICapabilities desiredCapabilities)
at OpenQA.Selenium.Appium.AppiumDriver`1..ctor(Uri remoteAddress, ICapabilities desiredCapabilities)
at OpenQA.Selenium.Appium.Android.AndroidDriver`1..ctor(Uri remoteAddress, DesiredCapabilities desiredCapabilities)
at Training_Appium.UnitTest1.TestMethod1() in D:\Work\Training\Training_Appium\Training_Appium\UnitTest1.cs:line 23
Result Message:
Test method Training_Appium.UnitTest1.TestMethod1 threw exception:
OpenQA.Selenium.WebDriverException: Unexpected error. System.Net.WebException: Unable to connect to the remote server —> System.Net.Sockets.SocketException: No connection could be made because the target machine actively refused it 127.0.0.1:4723
at System.Net.Sockets.Socket.DoConnect(EndPoint endPointSnapshot, SocketAddress socketAddress)
at System.Net.ServicePoint.ConnectSocketInternal(Boolean connectFailure, Socket s4, Socket s6, Socket& socket, IPAddress& address, ConnectSocketState state, IAsyncResult asyncResult, Exception& exception)
— End of inner exception stack trace —
at OpenQA.Selenium.Appium.Service.AppiumCommandExecutor.Execute(Command commandToExecute)
at OpenQA.Selenium.Remote.RemoteWebDriver.Execute(String driverCommandToExecute, Dictionary`2 parameters)
Hi i tried setting up appium with Selenium in xamarin studio- but i got the following error – could u please tell me where did i go wrong?.Can u please be more specific what did i miss?
DesiredCapabilities cap = new DesiredCapabilities();
Uri urlObj = new Uri(“http://”+strHost+”:”+strPort+”/wd/hub”);
cap.SetCapability(“browserName”, “Android”);
cap.SetCapability(“platformName”, “Android”);
cap.SetCapability(“platformVersion”, “4.4.2”);
cap.SetCapability(“deviceName”, “emulator-5556”);
cap.SetCapability(“appPackage”, ” com.abc.def.ghi”);
cap.SetCapability(“app”, “abc.apk”);
driver = new RemoteWebDriver(urlObj,cap);
OpenQA.Selenium.WebDriverException : Unexpected error. Parameters were incorrect. We wanted {“required”:[“desiredCapabilities”],”optional”:[“requiredCapabilities”,”sessionId”,”id”,”sessionId”,”id”,”sessionId”,”id”,”sessionId”,”id”,”sessionId”,”id”,”sessionId”,”id”]} and you sent [“desiredCapabilities”,”capabilities”]
I am trying to open notepad using Appium with C# but getting error (Additional information: Unexpected error. The URL ‘/session’ did not map to a valid resource). Please help me out to fix this. Let me know what is wrong in below code:
using OpenQA.Selenium.Appium.Windows;
using OpenQA.Selenium.Remote;
using System;
I did the same like video, but i got this error:
“The ‘Dispose’ method of type ‘OpenQA.Selenium.Appium.Service.AppiumCommandExecutor’ in the ‘appium-dotnet-driver, Version = 3.0.0.2, Culture = neutral, PublicKeyToken = null’ integrated code does not have an application.”
I changed appium versions but the error didn’t changed (Only Version number changed on error). Please provide us both versions (appium and selandroid and etc)
Thank you
At 5:20 in your video, how do you know that the device name = “devicename” and the value is “donatello”? Is there a way to find that out from the application you are testing?
At 5:20 in your video, you enter the device capabilities. How do you know that the values are “devicename” and “donatello”. Is there a way of checking these values for the application I want to test?
I have learnt a lot from your videos. very well explained.
I am currently automating BDD driven mobile app automation using Appium, specflow, c#
Currently stuck on how to execute tests in an order.
I have tried setting scenario names starting with 001, 002 etc to maintain order, but still somehow is not working as required order.
Stuck with
System.TypeLoadException: ‘Method ‘Dispose’ in type ‘OpenQA.Selenium.Appium.Service.AppiumCommandExecutor’ from assembly ‘appium-dotnet-driver, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null’ does not have an implementation.’
i have tried all version of appium web driver but no use. anyone has got the same and resolved, please let me know.
Same with me. I have updated all the references, then downgraded them one version at a time – still no luck. I cannot run the CalculatorTest tests.
Did you find anything? any luck?
Hi Karthik,
Thanks for all the info about Appium on your site. Can you please send me sample code about how to launch a mobile web page in chrome. Am using samsung galaxy tablet and want to test our website in the chrome browser built in it. It would be of great help if you do this. Thanks a ton
Hi Karthik,
I am looking to swipe an element in C# to unhide another element. Can you please suggest how can i do that?
Hi Karthik ,I tried the same code but I get a SocketException.
The complete message is given : Any suggestions ? TIA.
Test Name: TestMethod1
Test FullName: Training_Appium.UnitTest1.TestMethod1
Test Source: D:\Work\Training\Training_Appium\Training_Appium\UnitTest1.cs : line 16
Test Outcome: Failed
Test Duration: 0:00:02.484985
Result StackTrace:
at OpenQA.Selenium.Remote.RemoteWebDriver.UnpackAndThrowOnError(Response errorResponse)
at OpenQA.Selenium.Remote.RemoteWebDriver.Execute(String driverCommandToExecute, Dictionary`2 parameters)
at OpenQA.Selenium.Appium.AppiumDriver`1.Execute(String driverCommandToExecute, Dictionary`2 parameters)
at OpenQA.Selenium.Remote.RemoteWebDriver.StartSession(ICapabilities desiredCapabilities)
at OpenQA.Selenium.Remote.RemoteWebDriver..ctor(ICommandExecutor commandExecutor, ICapabilities desiredCapabilities)
at OpenQA.Selenium.Appium.AppiumDriver`1..ctor(Uri remoteAddress, ICapabilities desiredCapabilities)
at OpenQA.Selenium.Appium.Android.AndroidDriver`1..ctor(Uri remoteAddress, DesiredCapabilities desiredCapabilities)
at Training_Appium.UnitTest1.TestMethod1() in D:\Work\Training\Training_Appium\Training_Appium\UnitTest1.cs:line 23
Result Message:
Test method Training_Appium.UnitTest1.TestMethod1 threw exception:
OpenQA.Selenium.WebDriverException: Unexpected error. System.Net.WebException: Unable to connect to the remote server —> System.Net.Sockets.SocketException: No connection could be made because the target machine actively refused it 127.0.0.1:4723
at System.Net.Sockets.Socket.DoConnect(EndPoint endPointSnapshot, SocketAddress socketAddress)
at System.Net.ServicePoint.ConnectSocketInternal(Boolean connectFailure, Socket s4, Socket s6, Socket& socket, IPAddress& address, ConnectSocketState state, IAsyncResult asyncResult, Exception& exception)
— End of inner exception stack trace —
at OpenQA.Selenium.Appium.Service.AppiumCommandExecutor.Execute(Command commandToExecute)
at OpenQA.Selenium.Remote.RemoteWebDriver.Execute(String driverCommandToExecute, Dictionary`2 parameters)
Hi i tried setting up appium with Selenium in xamarin studio- but i got the following error – could u please tell me where did i go wrong?.Can u please be more specific what did i miss?
String strHost = “10.185.53.94”;
String strPort = “4723”;
DesiredCapabilities cap = new DesiredCapabilities();
Uri urlObj = new Uri(“http://”+strHost+”:”+strPort+”/wd/hub”);
cap.SetCapability(“browserName”, “Android”);
cap.SetCapability(“platformName”, “Android”);
cap.SetCapability(“platformVersion”, “4.4.2”);
cap.SetCapability(“deviceName”, “emulator-5556”);
cap.SetCapability(“appPackage”, ” com.abc.def.ghi”);
cap.SetCapability(“app”, “abc.apk”);
driver = new RemoteWebDriver(urlObj,cap);
OpenQA.Selenium.WebDriverException : Unexpected error. Parameters were incorrect. We wanted {“required”:[“desiredCapabilities”],”optional”:[“requiredCapabilities”,”sessionId”,”id”,”sessionId”,”id”,”sessionId”,”id”,”sessionId”,”id”,”sessionId”,”id”,”sessionId”,”id”]} and you sent [“desiredCapabilities”,”capabilities”]
Nice explanation. Thanks for the video
Hi Karthik,
I am trying to open notepad using Appium with C# but getting error (Additional information: Unexpected error. The URL ‘/session’ did not map to a valid resource). Please help me out to fix this. Let me know what is wrong in below code:
using OpenQA.Selenium.Appium.Windows;
using OpenQA.Selenium.Remote;
using System;
namespace AppiumPOC
{
class Program
{
private static readonly string driverUrl = “http://127.0.0.1:4723”;
//private static readonly string driverUrl = “http://127.0.0.1:4723/wd/hub”;
//private static readonly string app = “Microsoft.WindowsAlarms_8wekyb3d8bbwe!App”;
private static readonly string app = @”C:\Windows\System32\notepad.exe”;
static void Main(string[] args)
{
DesiredCapabilities capabilities = new DesiredCapabilities();
capabilities.SetCapability(“platformName”, “Windows”);
capabilities.SetCapability(“deviceName”, “WindowsPC”);
capabilities.SetCapability(“app”, app);
var x = new WindowsDriver(new Uri(driverUrl), capabilities);
}
}
}
Hello,
I did the same like video, but i got this error:
“The ‘Dispose’ method of type ‘OpenQA.Selenium.Appium.Service.AppiumCommandExecutor’ in the ‘appium-dotnet-driver, Version = 3.0.0.2, Culture = neutral, PublicKeyToken = null’ integrated code does not have an application.”
I changed appium versions but the error didn’t changed (Only Version number changed on error). Please provide us both versions (appium and selandroid and etc)
Thank you
Any luck on this?
I’m also stuck
Hi,
At 5:20 in your video, how do you know that the device name = “devicename” and the value is “donatello”? Is there a way to find that out from the application you are testing?
Many Thanks
Ewan
Hi,
At 5:20 in your video, you enter the device capabilities. How do you know that the values are “devicename” and “donatello”. Is there a way of checking these values for the application I want to test?
Many Thanks
Ewan
I used ADB command to get the devices attached in my machine
Use this command
adb devices -l
Thanks,
Karthik KK
Hi,
How do you check for “AppPackage” or “AppActivity” values for the application?
Hi Karthik,
I have learnt a lot from your videos. very well explained.
I am currently automating BDD driven mobile app automation using Appium, specflow, c#
Currently stuck on how to execute tests in an order.
I have tried setting scenario names starting with 001, 002 etc to maintain order, but still somehow is not working as required order.
Any tips?
Thanks!
There is no way we can run in order, but again try making each and every scenario as independent, which will make your test to run in any order !
Thanks,
Karthik KK
Stuck with
System.TypeLoadException: ‘Method ‘Dispose’ in type ‘OpenQA.Selenium.Appium.Service.AppiumCommandExecutor’ from assembly ‘appium-dotnet-driver, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null’ does not have an implementation.’
i have tried all version of appium web driver but no use. anyone has got the same and resolved, please let me know.
Same with me. I have updated all the references, then downgraded them one version at a time – still no luck. I cannot run the CalculatorTest tests.
Did you find anything? any luck?
What is your Selenium version?