Looking for help and thanking in advance if anyone can help me out with this query.
My hub running successfully from CL
java -jar selenium-server-standalone-2.45.0.jar -role hub -hub http://192.168.5.179:4444/grid/register
I have two Appium servers running successfully from CL
appium -p 4725 --bootstrap-port 8084 -U 4df1ebc02f355f33 --nodeconfig android_4.json --session-override --full-reset
appium -p 4727 --bootstrap-port 8082 -U TA00302QAZ --nodeconfig android_5.json --session-
override --full-reset
My JSON profiles
android_5.json
{
"capabilities":
[
{
"platformName": "ANDROID",
"platformVersion": "4.4.4",
"browserName": "Android_4.4",
"deviceName": "TA00302QAZ",
"maxInstances": 2,
"appPackage": "XXX.android.qa",
"appActivity": "XXX.ui.activities.BootStrapActivity"
}
],
"configuration":
{
"cleanUpCycle": 2000,
"timeout": 30000,
"proxy": "org.openqa.grid.selenium.proxy.DefaultRemoteProxy",
"url": "http://192.168.5.179:4727/wd/hub",
"host": "192.168.5.179",
"port": 4727,
"maxSession": 2,
"register": true,
"registerCycle": 5000,
"hubPort": 4444,
"hubHost": "192.168.5.179",
"hub": "http://192.168.5.179:4444/grid/register",
"role": "node"
}
}
android_4.json
{
"capabilities":
[
{
"platformName": "ANDROID",
"platformVersion": "4.3",
"browserName": "Android_4.3",
"deviceName": "c791416e",
"maxInstances": 2,
"appPackage": "XXX.android.qa",
"appActivity": "XXX.ui.activities.BootStrapActivity"
}
],
"configuration":
{
"cleanUpCycle": 2000,
"timeout": 30000,
"proxy": "org.openqa.grid.selenium.proxy.DefaultRemoteProxy",
"url": "http://192.168.5.179:4725/wd/hub",
"host": "192.168.5.179",
"port": 4725,
"maxSession": 2,
"register": true,
"registerCycle": 5000,
"hubPort": 4444,
"hubHost": "192.168.5.179",
"hub": "http://192.168.5.179:4444/grid/register",
"role": "node"
}
}
My Java test / setup file
package com.appiumtest;
import ...
public class Login {
public AppiumDriver driver;
@BeforeMethod
@Parameters({ "version", "browser", "platform", "devicename", "node" })
public void setUp(String version, String browser, String platform, String devicename, String node) throws Exception {
// appium setup
File appDir = new File ("/Users/fkhan/Desktop/AndroidAppium");
File app = new File(appDir, "XXX.apk");
DesiredCapabilities capabilities = new DesiredCapabilities();
//DesiredCapabilities capabilities1 = new DesiredCapabilities();
//capabilities.setCapability(CapabilityType.PLATFORM, "Android");
//capabilities.setCapability("browserName", browser);
//capabilities.setCapability("deviceName", devicename);
//capabilities.setCapability("platformName", platform);
//capabilities.setCapability("platformVersion", version);
//capabilities.setCapability("app", app.getAbsolutePath());
//capabilities.setCapability("appPackage", "XXX.android.qa");
//capabilities.setCapability("appActivity", "XXX.ui.activities.BootStrapActivity");
if(browser.equalsIgnoreCase("Android_4.3")){
capabilities.setCapability(MobileCapabilityType.DEVICE_NAME, devicename);
capabilities.setCapability(MobileCapabilityType.BROWSER_NAME, browser);
capabilities.setCapability(MobileCapabilityType.PLATFORM, platform);
capabilities.setCapability(MobileCapabilityType.PLATFORM_VERSION, version);
capabilities.setCapability(MobileCapabilityType.APP, app.getAbsolutePath());
capabilities.setCapability(MobileCapabilityType.APP_ACTIVITY, "XXX.ui.activities.BootStrapActivity");
capabilities.setCapability(MobileCapabilityType.APP_PACKAGE, "XXX.android.qa");
System.out.println("*******Android 4.3*********");
System.out.println(devicename);
}else if(browser.equalsIgnoreCase("Android_4.4")){
capabilities.setCapability(MobileCapabilityType.DEVICE_NAME, devicename);
capabilities.setCapability(MobileCapabilityType.BROWSER_NAME, browser);
capabilities.setCapability(MobileCapabilityType.PLATFORM, platform);
capabilities.setCapability(MobileCapabilityType.PLATFORM_VERSION, version);
capabilities.setCapability(MobileCapabilityType.APP, app.getAbsolutePath());
capabilities.setCapability(MobileCapabilityType.APP_ACTIVITY, "XXX.ui.activities.BootStrapActivity");
System.out.println("*******Android 4.4*********");
System.out.println(devicename);
}
/*capabilities.setCapability(MobileCapabilityType.DEVICE_NAME, devicename);
capabilities.setCapability(MobileCapabilityType.BROWSER_NAME, browser);
capabilities.setCapability(MobileCapabilityType.PLATFORM, platform);
capabilities.setCapability(MobileCapabilityType.PLATFORM_VERSION, version);
capabilities.setCapability(MobileCapabilityType.APP, app.getAbsolutePath());
capabilities.setCapability(MobileCapabilityType.APP_ACTIVITY, "XXX.ui.activities.BootStrapActivity");
capabilities.setCapability(MobileCapabilityType.APP_PACKAGE, "XXX.android.qa");*/
driver = new AndroidDriver (new URL(node), capabilities);
System.out.println(devicename+"Outside");
driver.manage().timeouts().implicitlyWait(20, TimeUnit.SECONDS);
System.out.println("*******App Launched*********");
}
@AfterMethod
public void tearDown() throws Exception {
driver.quit();
}
@Test
public void homeScreen() throws InterruptedException, IOException {
WebDriverWait wait = new WebDriverWait(getAppiumDriver(), 15);
WebElement userNumber = getAppiumDriver().findElement(By.id("XXX.android:id/et_enter_number"));
wait.until(ExpectedConditions.elementToBeClickable(userNumber));
}
My testng XML
?xml version="1.0" encoding="UTF-8"?
!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd"
suite name="Parallel" parallel="tests" thread-count="5"
test name="TestAndroid4.4"
parameter name="version" value="4.4.4"/parameter
parameter name="browser" value="Android_4.4"/parameter
parameter name="platform" value="Android"/parameter
parameter name="devicename" value="TA00302QAZ"/parameter
parameter name="node" value="http://192.168.5.179:4727/wd/hub"/parameter
classes
class name="com.appiumtest.Login"/
/classes
/test !-- Test --
test name="TestAndroid4.3"
parameter name="version" value="4.3"/parameter
parameter name="browser" value="Android_4.3"/parameter
parameter name="platform" value="Windows"/parameter
parameter name="devicename" value="4df1ebc02f355f33"/parameter
parameter name="node" value="http://192.168.5.179:4725/wd/hub"/parameter
classes
class name="com.appiumtest.Login"/
/classes
/test !-- Test --
/suite !-- Suite --
Now the Question.
Sometime my tests run successfully and some time they don’t (mostly they don’t)
That shows two things that my setup which i think is quite right, that’s why it run sometime but i don’t know why they are not running most of the time
and this is the error which i get
warn: UiAutomator did not shut down fast enough, calling it gone
info: [debug] Cleaning up android objects
info: [debug] Cleaning up appium session
error: Failed to start an Appium session, err was: Error: EPERM, rename 'C:\Users\fkhan\Desktop\AndroidAppium\XXX-qa-3.apk'
info: [debug] Error: EPERM, rename 'C:\Users\fkhan\Desktop\AndroidAppium\XXX-qa-3.apk'
at Error (native)
info: [debug] Responding to client with error: {"status":33,"value":{"message":"A new session could not be created. (Original error: EPERM, rename 'C:
\\Users\\fkhan\\Desktop\\AndroidAppium\\XXX-qa-3.apk')","errno":-4048,"code":"EPERM","path":"C:\\Users\\fkhan\\Desktop\\AndroidAppium\\XXXqa-3.apk","origValue":"EPERM, rename 'C:\\Users\\fkhan\\Desktop\\AndroidAppium\\XXX-qa-3.apk'"},"sessionId":null}
info: <-- POST /wd/hub/session 500 16085.121 ms - 379
info: --> GET /wd/hub/status {}
info: [debug] Responding to client with success: {"status":0,"value":{"build":{"version":"1.3.7","revision":"72fbfaa116d3d9f6a862600ee99cf02f6d0e2182"
}}}
info: <-- GET /wd/hub/status 200 2.480 ms - 104 {"status":0,"value":{"build":{"version":"1.3.7","revision":"72fbfaa116d3d9f6a862600ee99cf02f6d0e2182"}
Please help, thanks in advance.