Reputation: 33371
I am trying to write my first Java Appium test.
Each time I'm running my code the following errors are presented:
org.openqa.selenium.WebDriverException: org.apache.http.conn.HttpHostConnectException: Connect to 127.0.0.1:4723 [/127.0.0.1] failed: Connection refused: connect
....
at MyFirstTest.setupTest(MyFirstTest.java:52)
Caused by: org.apache.http.conn.HttpHostConnectException: Connect to 127.0.0.1:4723 [/127.0.0.1] failed: Connection refused: connect
at org.apache.http.impl.conn.DefaultHttpClientConnectionOperator.connect(DefaultHttpClientConnectionOperator.java:158)
at org.apache.http.impl.conn.PoolingHttpClientConnectionManager.connect(PoolingHttpClientConnectionManager.java:353)
Here is my code:
public class MyFirstTest
{
public AppiumDriver<MobileElement> driver;
public WebDriverWait wait;
String usersEmail = "[email protected]";
String userPassword = "aaaaaa";
public void login() throws InterruptedException
{
WebElement email = driver.findElement(By.xpath("//android.widget.EditText[contains(@text,'Enter Email')]"));
email.sendKeys(usersEmail);
Sleeper.SYSTEM_SLEEPER.sleep(new Duration(1000, TimeUnit.MILLISECONDS));
driver.findElement(By.xpath("//android.widget.RelativeLayout[contains(@resource-id,'edtPassword')]//android.widget.EditText[contains(@resource-id,'edtText')]")).sendKeys(userPassword);
driver.findElement(By.xpath("//android.widget.Button[contains(@resource-id,'btnLogin')]")).click();
}
@Before
public void setupTest() throws Exception
{
DesiredCapabilities capabilities = new DesiredCapabilities();
capabilities.setCapability("platormName", "Android");
capabilities.setCapability("deviceName", "Redmi");
capabilities.setCapability("appPackage","com.ls.stockpair");
capabilities.setCapability("appActivity","com.ls.stockpair.activity.SplashActivity");
driver = new AndroidDriver<MobileElement>(new URL("http://127.0.0.1:4723/wd/hub"), capabilities);
Thread.sleep(8000);
}
@Test
public void go() throws InterruptedException
{
WebElement email = driver.findElement(By.xpath("//android.widget.EditText[contains(@text,'Enter Email')]"));
email.sendKeys(usersEmail);
Sleeper.SYSTEM_SLEEPER.sleep(new Duration(1000, TimeUnit.MILLISECONDS));
driver.findElement(By.xpath("//android.widget.RelativeLayout[contains(@resource-id,'edtPassword')]//android.widget.EditText[contains(@resource-id,'edtText')]")).sendKeys(userPassword);
driver.findElement(By.xpath("//android.widget.Button[contains(@resource-id,'btnLogin')]")).click();
Sleeper.SYSTEM_SLEEPER.sleep(new Duration(2000, TimeUnit.MILLISECONDS));
}
}
Currently I'm starting Appium manually before running the code. Also tried to start Appium from the code - this did not help.
This code worked in the first day I started writing this code however somehow (I really do not know why) this stopped working.
I saw many questions with different answers about this issue in the web but no one helped me so far.
I'm working with a real Android device connected via USB to my Windows machine.
Upvotes: 1
Views: 13612
Reputation: 976
Below is the best solution, You don't need to start appium manually everytime.
public static AndroidDriver<MobileElement> driver=null;
public static AppiumDriverLocalService service=null;
service = AppiumDriverLocalService.buildDefaultService();
DesiredCapabilities capabilities = new DesiredCapabilities();
capabilities.setCapability("platormName", "Android");
capabilities.setCapability("deviceName", "Redmi");
capabilities.setCapability("appPackage","com.ls.stockpair");
capabilities.setCapability("appActivity","com.ls.stockpair.activity.SplashActivity");
service.start();
driver = new AndroidDriver<MobileElement>(service, capabilities);
Note : If you are using appium version 1.5.3+ then you need to set APPIUM_BINARY_PATH in environmental variable.
e.g. APPIUM_BINARY_PATH=C:\Users\YourUserName\AppData\Roaming\npm\node_modules\appium\build\lib\main.js
For more details on how to set APPIUM_BINARY_PATH please refer below screen shot:
Upvotes: 3