【发布时间】:2015-07-29 21:26:09
【问题描述】:
在我的机器上运行 Appium 服务器的代码时总是出错。谁能帮我解决这个问题。我关注了一些线程,但没有一个无法解决我的问题。
如果我手动运行“appium.exe”并运行代码工作正常,但是当我开始从代码运行 appium 时,交互就会出现问题。
配置:Windows 7 64 位、Appium 1.2.4.1、Selenium 2.45、Appium Java 客户端 - 2.2、java 1.6
以下是以编程方式启动 Appium 服务器的代码
public class AppiumServerUtils {
public void startServer(){
CommandLine command = new CommandLine("cmd");
command.addArgument("/c");
command.addArgument("F:\\Softwares\\Selenium\\Appium\\AppiumForWindows-1.2.4.1\\Appium\\node.exe");
command.addArgument("F:\\Softwares\\Selenium\\Appium\\AppiumForWindows-1.2.4.1\\Appium\\node_modules\\appium\\bin\\appium.js");
command.addArgument("--address");
command.addArgument("127.0.0.1",false);
command.addArgument("--port",false);
command.addArgument("4723",false);
command.addArgument("--bootstrap-port",false);
command.addArgument("4724",false);
command.addArgument("--selendroid-port",false);
command.addArgument("8082",false);
command.addArgument("--no-reset",false);
command.addArgument("--local-timezone");
command.addArgument("--log");
command.addArgument("F:\\Softwares\\Selenium\\Appium\\appiumServerLogs.txt");
DefaultExecuteResultHandler resultHandler = new DefaultExecuteResultHandler();
DefaultExecutor executor = new DefaultExecutor();
executor.setExitValue(1);
try {
executor.execute(command, resultHandler);
} catch (IOException e) {
e.printStackTrace();
}
}
public void stopServer(){
CommandLine command = new CommandLine("cmd");
command.addArgument("/c");
command.addArgument("taskkill");
command.addArgument("/F");
command.addArgument("/IM");
command.addArgument("node.exe");
DefaultExecuteResultHandler resultHandler = new DefaultExecuteResultHandler();
DefaultExecutor executor = new DefaultExecutor();
executor.setExitValue(1);
try {
executor.execute(command, resultHandler);
} catch (IOException e) {
e.printStackTrace();
}
}
}
我的移动脚本是,
static AndroidDriver driver;
AppiumServerUtils aServer = new AppiumServerUtils();
aServer.startServer();
DesiredCapabilities mDesiredCapabilities = new DesiredCapabilities();
mDesiredCapabilities.setCapability(MobileCapabilityType.PLATFORM_NAME, "Android");
mDesiredCapabilities.setCapability(MobileCapabilityType.DEVICE_NAME, "Nexus S");
mDesiredCapabilities.setCapability(MobileCapabilityType.APP_PACKAGE, "com.android.vod");
mDesiredCapabilities.setCapability(MobileCapabilityType.APP_ACTIVITY, "com.android.vod.launcher.Main");
mDesiredCapabilities.setCapability(MobileCapabilityType.APP_WAIT_ACTIVITY, "com.android.vod.tools.remotecontrol.dialogs.Authentication");
mDesiredCapabilities.setCapability(MobileCapabilityType.VERSION, "4.3");
driver = new AndroidDriver(new URL("http://127.0.0.1:4723/wd/hub"), mDesiredCapabilities);
androidDriver.manage().timeouts().implicitlyWait(40, TimeUnit.SECONDS);
androidDriver.hideKeyboard();
driver.close();
获取以下异常,
线程“主”org.openqa.selenium.remote.UnreachableBrowserException 中的异常:无法启动新会话。可能的原因是远程服务器地址无效或浏览器启动失败。 构建信息:版本:'2.45.0',修订:'5017cb8',时间:'2015-02-26 23:59:50' 系统信息:主机:'Saravanan-PC',ip:'192.168.101.22',os.name:'Windows 7',os.arch:'x86',os.version:'6.1',java.version:'1.6 .0_45' 驱动程序信息:driver.version:AndroidDriver 在 org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:593) 在 io.appium.java_client.AppiumDriver.execute(AppiumDriver.java:180) 在 org.openqa.selenium.remote.RemoteWebDriver.startSession(RemoteWebDriver.java:240) 在 org.openqa.selenium.remote.RemoteWebDriver.(RemoteWebDriver.java:126) 在 org.openqa.selenium.remote.RemoteWebDriver.(RemoteWebDriver.java:153) 在 io.appium.java_client.AppiumDriver.(AppiumDriver.java:109) 在 io.appium.java_client.android.AndroidDriver.(AndroidDriver.java:40) 在 com.helloappium.HelloAppium.main(HelloAppium.java:48) 引起:org.apache.http.conn.HttpHostConnectException:连接到 127.0.0.1:4723 [/127.0.0.1] 失败:连接被拒绝:连接 在 org.apache.http.impl.conn.HttpClientConnectionOperator.connect(HttpClientConnectionOperator.java:142) 在 org.apache.http.impl.conn.PoolingHttpClientConnectionManager.connect(PoolingHttpClientConnectionManager.java:319) 在 org.apache.http.impl.execchain.MainClientExec.establishRoute(MainClientExec.java:363) 在 org.apache.http.impl.execchain.MainClientExec.execute(MainClientExec.java:219) 在 org.apache.http.impl.execchain.ProtocolExec.execute(ProtocolExec.java:195) 在 org.apache.http.impl.execchain.RetryExec.execute(RetryExec.java:86) 在 org.apache.http.impl.execchain.RedirectExec.execute(RedirectExec.java:108) 在 org.apache.http.impl.client.InternalHttpClient.doExecute(InternalHttpClient.java:184) 在 org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:72) 在 org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:57) 在 org.openqa.selenium.remote.internal.ApacheHttpClient.fallBackExecute(ApacheHttpClient.java:126) 在 org.openqa.selenium.remote.internal.ApacheHttpClient.execute(ApacheHttpClient.java:72) 在 org.openqa.selenium.remote.HttpCommandExecutor.execute(HttpCommandExecutor.java:133) 在 org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:572) ... 7 更多 引起:java.net.ConnectException:连接被拒绝:连接 在 java.net.PlainSocketImpl.socketConnect(本机方法) 在 java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:351) 在 java.net.PlainSocketImpl.connectToAddress(PlainSocketImpl.java:213) 在 java.net.PlainSocketImpl.connect(PlainSocketImpl.java:200) 在 java.net.SocksSocketImpl.connect(SocksSocketImpl.java:366) 在 java.net.Socket.connect(Socket.java:529) 在 org.apache.http.conn.socket.PlainConnectionSocketFactory.connectSocket(PlainConnectionSocketFactory.java:72) 在 org.apache.http.impl.conn.HttpClientConnectionOperator.connect(HttpClientConnectionOperator.java:125) ... 20 更多 [36minfo[39m: 欢迎使用 Appium v1.2.4 (REV 71584425ecf777349e3215f0f18e71e7782acfb6) [36minfo[39m:Appium REST http 接口监听器开始于 127.0.0.1:4723 [36minfo[39m: [debug] 非默认服务器参数:{"address":"127.0.0.1","noReset":true,"log":"F:\Softwares\Selenium\Appium\appiumServerLogs.txt", "localTimezone":true,"selendroidPort":8082} [36minfo [39m:控制台日志级别:调试 [36minfo[39m:文件日志级别:调试
【问题讨论】:
标签: android selenium-webdriver appium