为我的机器上运行的 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();
出现以下异常,
线程“main”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.builtRoute(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: [调试] 非默认服务器参数: {"address":"127.0.0.1","noReset":true,"log":"F:\Softwares\Selenium\Appium\appiumServerLogs.txt", “localTimezone”:true,“selendroidPort”:8082}
[36minfo[39m:控制台日志级别:调试
[36minfo[39m:文件日志级别:调试