我無法在具有多個移動設備的Android平臺上並行自動執行測試。Appium並行執行不同的服務器
如果我將2個設備連接到我的系統並提供移動設備名稱和版本等功能,則它正在通過ADB
首先識別的設備中執行。
如果嘗試使用不同的端口啓動appium服務器,
new AppiumServiceBuilder().usingAnyFreePort() I am getting Null pointer Exception.
[36minfo[39m: Appium REST http interface listener started on 0.0.0.0:2583
[36minfo[39m: [debug] Non-default server args: {"port":2583}
1)如何與AppiumServiceBuilder()
2)如何限制appium執行上覆蓋會話提供有能力的設備,甚至連接2個或更多設備。
我的代碼:
public class ApiumMain {
public static void main(String[] args) {
new Thread(new Device_Thread("4897bb00", "6.0.1")).start();
// new Thread(new Device_Thread("TA64301YVY", "5.0.1")).start();
}
}
public class Device_Thread extends ApiumMain implements Runnable {
public String mobileDeviceName;
public String androidVersion;
public Device_Thread(String mobile, String version) {
mobileDeviceName = mobile;
androidVersion = version;
}
@Override
public void run() {
String hsotMachineIP = "127.0.0.1";
Integer seleniumProt = 4723; /*Default {"port":4723}*/
String nodeJSExecutable = "C:\\Program Files (x86)\\Appium\\node.exe";
String appiumJS = "C:\\Program Files (x86)\\Appium\\node_modules\\appium\\bin\\appium.js";
Integer nodeJSPort = (int)(Math.random() * 8000) + 1000;
startAppium(nodeJSExecutable, nodeJSPort, appiumJS, mobileDeviceName, androidVersion, hsotMachineIP, seleniumProt);
}
public void startAppium(String nodeJSExecutable, int nodeJSPort, String appiumJS,
String mobileDeviceName, String androidVersion, String hsotMachineIP, int seleniumProt) {
RemoteWebDriver driver = null;
String appURL = "http://www.w3schools.com/";
// http://appium.io/slate/en/master/?java#appium-server-capabilities
DesiredCapabilities capabilities = new DesiredCapabilities();
capabilities.setCapability("automationName", "Appium");
capabilities.setCapability("platformName", "Android");
capabilities.setCapability("platformVersion", androidVersion);
capabilities.setCapability("deviceName", mobileDeviceName);
capabilities.setCapability("app", "chrome");
capabilities.setCapability("browserName", "chrome");
capabilities.setCapability("newCommandTimeout", "0");
// ANDROID ONLY
/*capabilities.setCapability("appActivity", "com.android");
capabilities.setCapability("appPackage", ".ApiumMain");
*/
// Appium servers are nothing but the Node.js server
AppiumDriverLocalService service = AppiumDriverLocalService.buildService(
new AppiumServiceBuilder()
.usingDriverExecutable(new File(nodeJSExecutable))
.withAppiumJS(new File(appiumJS))
);
service.start();
System.out.println("Device : " + mobileDeviceName);
try {
String url = String.format("http://%s:%d/wd/hub", hsotMachineIP, seleniumProt);
System.out.println(" Server Address : " + url);
driver = new RemoteWebDriver(new URL(url), capabilities);
driver.get(appURL);
browserActions(driver, appURL);
}catch (MalformedURLException e) {
e.printStackTrace();
} finally {
driver.quit();
service.stop();
}
}
private void browserActions(RemoteWebDriver driver, String appURL) {
try {
WebElement ele = driver.findElementByXPath("//body/div[4]/div[1]/div[1]/a[1]");
ele.click();
WebElement ele2 = driver.findElementByXPath("//*[@id='topnav']/div[1]/div[1]/a[2]");
ele2.click();
System.in.read();
System.in.read();
} catch (ElementNotVisibleException logMsg){
} catch (IOException e) {
}
}
}
Appium setup
對於Windows: 已安裝Android SDK
,Appium [Server
& java-client
],添加ADT pugin
到Eclipse IDE和硒 - 服務器standalone
設置環境變量:
AVA_HOME~C:\Program Files (x86)\Java\jdk1.8.0_66
ANDROID_HOME~D:\Android\sdk
Path~D:\Android\sdk;D:\Android\sdk\platform-tools - ADB Debugger