我一直在尝试以编程方式启动Appium Server,然后基于Process输出,初始化Android驱动程序并运行一些测试。但是,每次从程序启动Appium Server时,执行都会在Android驱动程序的初始化时停止。
以下是启动服务器的方法:
private boolean StartServer(String strCommand)
{
try
{
rtCommand = Runtime.getRuntime();
proc = rtCommand.exec(strCommand);
BufferedReader stdInput = new BufferedReader(new
InputStreamReader(proc.getInputStream()));
//Checking output of Appium Server Initialization
String s = null;
while ((s = stdInput.readLine()) != null)
{
System.out.println(s);
if (s.contains("Console LogLevel: debug"));
return true;
}
}
catch (Exception ex)
{
System.out.println("Error in starting Appium Server. Stack Trace below:");
ex.printStackTrace();
return false;
}
return false;
}
现在,我的TestNG注释@BeforeClass
包含以下代码:
@BeforeClass
public void setUp() throws MalformedURLException
{
StartServer("cmd /c \"\"C:/Program Files (x86)/nodejs/node.exe\" \"C:/Program Files (x86)/Appium/node_modules/appium/lib/server/main.js\" --address 127.0.0.1 --port 4723 --platform-name Android --platform-version 23 --automation-name Appium --log-no-color --udid 3100aeb26c6a2363\"");
FrameworkDriver objFrameworkDriver = new FrameworkDriver();
DesiredCapabilities capabilities = new DesiredCapabilities();
capabilities.setCapability("deviceName", "ec5bee97");
capabilities.setCapability("BROWSER_NAME", Android");
capabilities.setCapability("VERSION", "5.1.1");
capabilities.setCapability("platformName", "Android");
capabilities.setCapability("appPackage", "com.XX.AA");
capabilities.setCapability("appActivity", "com.XX.AA.BB");
strProjectDir = "<MyProjectLoc>";
try
{
driver = new AndroidDriver(new URL("http://127.0.0.1:4723/wd/hub"), capabilities);
}
catch (Exception ex)
{
ex.printStackTrace();
}
System.out.println();
}
此处暂停执行:
driver = new AndroidDriver(new URL("http://127.0.0.1:4723/wd/hub"), capabilities);
答案 0 :(得分:0)
尝试在启动服务器命令行中使用版本5.1.1而不是platform-version 23。 (与代码中的功能中定义的版本相同)
StartServer("cmd /c \"\"C:/Program Files (x86)/nodejs/node.exe\" \"C:/Program Files (x86)/Appium/node_modules/appium/lib/server/main.js\" --address 127.0.0.1 --port 4723 --platform-name Android --version 5.1.1 --automation-name Appium --log-no-color --udid 3100aeb26c6a2363\"");
Appium希望使用Android设备的操作系统版本而不是API级别
此外,请确保定义功能时使用的设备名称与启动服务器命令行中定义的设备名称相同。