以编程方式启动时,Appium不会初始化驱动程序 [英] Appium does not initialize driver when launched programatically
问题描述
我正在使用Java和Selenium通过命令行初始化Appium,以便在Android chrome浏览器上运行测试.
但是,该进程将运行无限长的时间,并且不会执行"DesiredCapabilities
"行中的代码.
代码:
I am initializing Appium through command line using Java and Selenium for running test on Android chrome browser.
However, the process runs for infinite time and the code from "DesiredCapabilities
" line doesn't get executed..
Code :
Process proc;
String path_to_appium = System.getenv("APPIUM_HOME") + File.separator + "node_modules" + File.separator + "appium" + File.separator + "bin" + File.separator + "appium.js";
String path_to_node = System.getenv("APPIUM_HOME") + File.separator + "node.exe";
proc = Runtime.getRuntime().exec("\"" + path_to_node + "\"" + " " + "\"" + path_to_appium + "\"" + " " + "--address 127.0.0.1 --browser-name Chrome --platform-name Android --platform-version 17 --automation-name Appium --chromedriver-port 9516 --bootstrap-port 4724 --no-reset --local-timezone --log appium_log.log");
System.out.println("Android Chrome driver would be used");
DesiredCapabilities capabilities = new DesiredCapabilities();
capabilities.setCapability("platformName","Android");
capabilities.setCapability("deviceName", "HTC One X");
capabilities.setCapability("platformVersion", "4.2.2");
capabilities.setCapability("device", "android");
capabilities.setCapability("browserName", MobileBrowserType.CHROME);
Thread.sleep(2000);
driver = new RemoteWebDriver(new URL("http://127.0.0.1:4723/wd/hub"), capabilities);
driver.get("test.com");
控制台上没有任何输出.
I don't get any output in console.
什么都没发生.该过程不会在下一行进行(即设置DesiredCapabilities
). chrome无法在设备上启动.
Nothing happens. The process doesn't go on next line (i.e. setting DesiredCapabilities
). The chrome doesn't get launched on the device.
注意:当我从命令行执行命令,然后从DesiredCapabilities
行开始测试时,测试运行良好,并且chrome成功初始化.
Note : When i execute the command from command line, and then start test from DesiredCapabilities
line, the test runs fine and chrome is initialized successfully.
代码有什么问题?
推荐答案
最新的appium版本(即1_4_16_1)中存在问题.
The problem was there in the latest appium version i.e. 1_4_16_1.
appium服务器以编程方式启动时,它正在创建死锁,因此未初始化驱动程序.
When the appium server was launched programatically, it was creating a deadlock because of which the driver was not being initialized.
使用Appium的ServerArguments
并替换行后,问题得到解决
The issue got solved after using ServerArguments
of Appium and replacing the line
proc = Runtime.getRuntime().exec("\"" + path_to_node + "\"" + " " + "\"" + path_to_appium + "\"" + " " + "--address 127.0.0.1 --browser-name Chrome --platform-name Android --platform-version 17 --automation-name Appium --chromedriver-port 9516 --bootstrap-port 4724 --no-reset --local-timezone --log appium_log.log");
具有以下代码:
ServerArguments serverArguments = new ServerArguments();
serverArguments.setArgument("--address","127.0.0.1");
serverArguments.setArgument("--chromedriver-port", 9516);
serverArguments.setArgument("--bootstrap-port", 4724);
serverArguments.setArgument("--browser-name", "Chrome");
serverArguments.setArgument("--no-reset", true);
serverArguments.setArgument("--local-timezone", true);
AppiumServer appiumServer = new AppiumServer(appium_folder, serverArguments);
appiumServer.startServer();
driver = new RemoteWebDriver(new URL("http://127.0.0.1:4723/wd/hub"), capabilities);
driver.get("test.com");
这篇关于以编程方式启动时,Appium不会初始化驱动程序的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!