无法创建新的远程会话。 Appium

时间:2017-04-14 10:00:49

标签: java android macos selenium appium

public class StartFirstJobTest {

AppiumDriver driver;
@BeforeTest
public void setUp() throws Exception {
    DesiredCapabilities capabilities = new DesiredCapabilities();
    capabilities.setCapability("deviceName", "F4AZFG07P508");
    //capabilities.setCapability("platformName","Android");
    //capabilities.setCapability("platformVersion", "5.0");
    driver = new AndroidDriver(new URL("http://127.0.0.1:4723/wd/hub"), capabilities);
}

当我尝试运行测试时,出现此错误。

  

org.openqa.selenium.SessionNotCreatedException:无法创建新的   远程会话。期望的能力=能力   [{platformName = Android,deviceName = F4AZFG07P508}],必填   capabilities =功能[{}]构建信息:版本:' 3.3.1',   修订版:' 5234b325d5',时间:' 2017-03-10 09:10:29 + 0000'系统信息:   主持人:' MacBook-Pro-Roman.local',ip:' fe80:0:0:0:77:aef0:77:32%en0',   os.name:' Mac OS X',os.arch:' x86_64',os.version:' 10.12.3',   java.version:' 1.8.0_121'驱动程序信息:driver.version:AndroidDriver

我认为我在appium中正确设置了所有内容(当检查器启动时,设备已安装应用程序且可以进行测试)

作为项目收藏家,我使用Maven

UPD。 我试图自动化应用程序。我在代码中指定了其他功能

    @BeforeTest
public void setUp() throws Exception {
    File app = new File("/Users/romanderabin/Downloads/TimeTracker.apk");
    DesiredCapabilities capabilities = new DesiredCapabilities();
    capabilities.setCapability("deviceName","F4AZFG07P508");
    capabilities.setCapability("platformVersion", "5.0");
    capabilities.setCapability("platformName", "Android");
    capabilities.setCapability("app", app.getAbsolutePath());
    capabilities.setCapability("appPackage", "com.ronasit.timetrackerandroid");
    capabilities.setCapability("appActivity","com.ronasit.timetrackerandroid.MainActivity");
    driver = new AndroidDriver(new URL("http://127.0.0.1:4727/wd/hub/"), capabilities);

且错误相同

  

org.openqa.selenium.SessionNotCreatedException:无法创建新的   远程会话。期望的能力=能力   [{应用= /用户/ romanderabin /下载/ TimeTracker.apk,   appPackage = com.ronasit.timetrackerandroid,   appActivity = com.ronasit.timetrackerandroid.MainActivity,   platformVersion = 5.0,platformName = Android,deviceName = F4AZFG07P508}],   required capabilities = Capabilities [{}]构建信息:版本:   ' 3.3.1',修订版:' 5234b325d5',时间:' 2017-03-10 09:10:29 + 0000'   系统信息:主持人:' MacBook-Pro-Roman.local',ip:   ' fe80:0:0:0:77:aef0:77:32%en0',os.name:' Mac OS X',os.arch:   ' x86_64',os.version:' 10.12.3',java.version:' 1.8.0_121'司机   info:driver.version:AndroidDriver

     

在   org.openqa.selenium.remote.ProtocolHandshake.createSession(ProtocolHandshake.java:126)     在   org.openqa.selenium.remote.HttpCommandExecutor.execute(HttpCommandExecutor.java:141)     在   io.appium.java_client.remote.AppiumCommandExecutor.execute(AppiumCommandExecutor.java:69)     在   org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:604)     在   io.appium.java_client.DefaultGenericMobileDriver.execute(DefaultGenericMobileDriver.java:40)     at io.appium.java_client.AppiumDriver.execute(AppiumDriver.java:1)     在   io.appium.java_client.android.AndroidDriver.execute(AndroidDriver.java:1)     在   org.openqa.selenium.remote.RemoteWebDriver.startSession(RemoteWebDriver.java:244)     在   org.openqa.selenium.remote.RemoteWebDriver。(RemoteWebDriver.java:131)     在   org.openqa.selenium.remote.RemoteWebDriver。(RemoteWebDriver.java:144)     在   io.appium.java_client.DefaultGenericMobileDriver。(DefaultGenericMobileDriver.java:36)     在io.appium.java_client.AppiumDriver。(AppiumDriver.java:114)     在io.appium.java_client.AppiumDriver。(AppiumDriver.java:132)     在   io.appium.java_client.android.AndroidDriver。(AndroidDriver.java:92)     在StartFirstJobTest.setUp(StartFirstJobTest.java:30)at   sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)at   sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)     在   sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)     在java.lang.reflect.Method.invoke(Method.java:498)at   org.testng.internal.MethodInvocationHelper.invokeMethod(MethodInvocationHelper.java:85)     在   org.testng.internal.Invoker.invokeConfigurationMethod(Invoker.java:510)     在org.testng.internal.Invoker.invokeConfigurations(Invoker.java:211)     在org.testng.internal.Invoker.invokeConfigurations(Invoker.java:138)     在org.testng.TestRunner.beforeRun(TestRunner.java:648)at   org.testng.TestRunner.run(TestRunner.java:616)at   org.testng.SuiteRunner.runTest(SuiteRunner.java:359)at   org.testng.SuiteRunner.runSequentially(SuiteRunner.java:354)at at   org.testng.SuiteRunner.privateRun(SuiteRunner.java:312)at at   org.testng.SuiteRunner.run(SuiteRunner.java:261)at   org.testng.SuiteRunnerWorker.runSuite(SuiteRunnerWorker.java:52)at   org.testng.SuiteRunnerWorker.run(SuiteRunnerWorker.java:86)at   org.testng.TestNG.runSuitesSequentially(TestNG.java:1191)at at   org.testng.TestNG.runSuitesLocally(TestNG.java:1116)at at   org.testng.TestNG.run(TestNG.java:1024)at   org.testng.IDEARemoteTestNG.run(IDEARemoteTestNG.java:72)at at   org.testng.RemoteTestNGStarter.main(RemoteTestNGStarter.java:127)at at   sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)at   sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)     在   sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)     在java.lang.reflect.Method.invoke(Method.java:498)at   com.intellij.rt.execution.application.AppMain.main(AppMain.java:147)

     

测试被忽略。

Appium在我尝试开始测试时记录

  

[HTTP] - > POST / wd / hub / session   {" desiredCapabilities" {"应用":" /Users/romanderabin/Downloads/TimeTracker.apk"," appPackage":&#34 ; com.ronasit.timetrackerandroid"" appActivity":" com.ronasit.timetrackerandroid.MainActivity"" platformVersion":" 5.0&# 34;," platformName":" Android和#34;" DEVICENAME":" F4AZFG07P508"}" requiredCapabilities":{ },"功能" {" desiredCapabilities" {"应用":" /Users/romanderabin/Downloads/TimeTracker.apk",& #34; appPackage":" com.ronasit.timetrackerandroid"" appActivity":" com.ronasit.timetrackerandroid.MainActivity""&platformVersion #34;:" 5.0"" platformName":" Android和#34;" DEVICENAME":" F4AZFG07P508"} " requiredCapabilities":{}}," alwaysMatch" {"应用":" /Users/romanderabin/Downloads/TimeTracker.apk" " appPackage":" com.ronasit.timetrackerandroid"" appActivity" :" com.ronasit.timetrackerandroid.MainActivity"" platformVersion":" 5.0"" platformName":"的Android&# 34;," DEVICENAME":" F4AZFG07P508"}" firstMatch":[]}

     

[debug] [MJSONWP]错误的参数:BadParametersError:参数是   不正确。我们要   {"需":[" desiredCapabilities&#34],"可选":[" requiredCapabilities""的sessionId",& #34; ID"]}   你送了   [" desiredCapabilities"" requiredCapabilities""功能"" alwaysMatch"" firstMatch"]

     

[HTTP]< - POST / wd / hub / session 400 4 ms - 228

7 个答案:

答案 0 :(得分:2)

我找到了问题的解决方案。将Appium Java客户端版本4.1.2更新到5.0.0 BETA6并使用Selenium-Java版本3.3.1

答案 1 :(得分:1)

在处理版本兼容性时,Maven 存储库提供了 Compile Dependencies 选项。只需向下滚动 Maven Repository 网站,您就会看到这一部分。

答案 2 :(得分:0)

我希望你使用的是物理设备,而不是模拟器。在这两种情况下,我们都需要在所需功能中提及浏览器或应用程序文件详细信息。我假设你没有在代码和Appium GUI中提到这些东西。下面是使用appium测试混合apk的测试示例代码。

DesiredCapabilities capabilities = new DesiredCapabilities();
capabilities.setCapability("deviceName","ANDROID");
capabilities.setCapability("platformVersion", "6");
capabilities.setCapability("platformName",Constant.appPlatform);
capabilities.setCapability("app", app.getAbsolutePath());
capabilities.setCapability("appPackage", Constant.appPackage);
capabilities.setCapability("appActivity",Constant.appActivity);
driver = new AndroidDriver(new URL("http://127.0.0.1:4727/wd/hub"), capabilities);  

此代码将调用在目标设备中打开的应用程序,其中提到的应用程序活动具有所需的功能。

答案 3 :(得分:0)

尝试更换设备。我更换了设备,对我有用。

答案 4 :(得分:0)

我遇到了同样的问题,因为我使用清单中的appPackage。应该从gradle(applicationId)获取appPackage。

答案 5 :(得分:0)

在您的 IDE 中,在终端中运行以下命令

appium --allow-insecure chromedriver_autodownload

这将安装 chromedrivers,您就可以在 chrome 浏览器上运行代码了

答案 6 :(得分:0)

这可能是一个问题,因为据我所知,您在客户端脚本所在的同一台机器上运行 Appium,请尝试使用“http://127.0.1.1:4723/wd/hub”。这个解决方案对我有用。

AndroidDriver<AndroidElement> driver = null;
driver = new AndroidDriver<>(new URL("http://127.0.1.1:4723/wd/hub"), capabilities);