You either run it from the terminal or automate the process of that using Java as I mentioned in this post.
If you are gonna use the donwnloaded UI Appium, then its location on your system is very relevant as you have to include that location when starting the server. If you are gonna download the Github version of Appium, then the UI Appium is irrelevant in this case and you just need to refer to the location of the Github repository.
Since i am using direct code from my local repo. hence i gave to “node </home/adminuser/Java_Projects/Appium/appium>”. you can use the directory where your appium is stored.
If you had installed appium using brew. then you just need to invoke “appium” command in runtime.exec(APPIUMCOMMAND).
Hi Hassan i was able to start the server via terminal as you suggested!!!
i saw posts how to implement it by CommandLine command = new CommandLine(“cmd”);
what is the practice on mac? (i want to start stop the server via code naturally)
What about the using of environment variables? We can reach agreement about system variable name, unify all drafts above and propose a new pull request.
But firstly…
I have a question. Anybody knows how to get appium node state? Port of the node which is already launched?
I am thinking about these variants… AndroidDriver and IOSDriver require remote URL. If node has been launched automatically or before test script is started they need to know port. If we could receive actual port number we would use:
new AndroidDriver(Capabilities);
new IOSDriver(Capabilities);
What are you think about it? Above is for the local starting.
You can use the following command to accomplish that:
echo off & FOR /F “usebackq tokens=2” %a in (TASKLIST ^| findstr /I node.exe) do (FOR /F “usebackq tokens=2” %b in (netstat -nao ^| findstr /R /C:"%a") do echo %b)
Run it from inside your Java application, parse the returned value and get the port number from it
@Hassan_Radi
I tried your suggestion for starting appium server through the following java code.
Somehow the server is not starting.When i check using the command sudo lsof -i :4723 there are no process running on the port 4723.
But when i try the same command manually in a terminal without /bin/sh the server starts successfully
Am i missing something here?
I am using Java 8 , Xcode 6.1 , MAC 10.10, Appium 1.3.1
Hi folks first of all thanks for helping me overcome this obstacle.
at the end my solution for starting & stopping the Appium server was simple,
i created 2 shell scripts files, one for starting the server & the other for stopping it.
Start server file include the following data:
/Applications/Appium.app/Contents/Resources/node/bin/node /Applications/Appium.app/Contents/Resources/node_modules/appium/bin/appium.js --address 127.0.0.1 --chromedriver-port 9516 --bootstrap-port 4725 --no-reset --local-timezone
Stop server file include the following data:
killall node
The java code for starting & Stopping the server was:
//Start Appium server
Runtime.getRuntime().exec("/startAppium");
//Stop Appium server
Runtime.getRuntime().exec("/stopAppium");
I was using this to Start/Stop my Appium Server. It has been working for the past 3 months. But now i upgrade to Appium 1.4.16.1 and this doesn’t start the Appium Server and doesn’t throws any error. Please let me know if I am doing anything wrong.
public class SampleJavaTest {
private static Process process;
public static String APPIUM_NODE_FILEPATH = “C:/Program Files (x86)/Appium/node.exe”;
public static String APPIUM_SERVERSCRIPT_FILEPATH = “C:/Program Files (x86)/Appium/node_modules/appium/bin/appium.js”;
I don’t have a solution to your problem but you may want to look into the new version of the java-client which supports starting the server from java and offers, as far as I can see, a very elegant solution.