以编程方式启动时,Appium 不会初始化驱动程序 [英] Appium does not initialize driver when launched programatically

查看:32
本文介绍了以编程方式启动时,Appium 不会初始化驱动程序的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在使用 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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆