Appium:无法创建新会话

时间:2014-11-10 07:53:31

标签: java android automation appium

在发布此问题之前,我在Stackoverflow和其他论坛上讨论了这些问题:

  1. A new session could not be created. (Original error: Instruments crashed on startup)
  2. Appium Error : A new session could not be created. (Original error: Did not get session redirect from Chromedriver)
  3. https://github.com/appium/appium/issues/2981
    在我的代码中做了一些改动:

    代码:

    package test.appium;
    
    import io.appium.java_client.AppiumDriver;
    
    import java.io.File;
    import java.net.MalformedURLException;
    import java.net.URL;
    import java.util.concurrent.TimeUnit;
    import org.openqa.selenium.WebDriver;
    import org.openqa.selenium.remote.CapabilityType;
    import org.openqa.selenium.remote.DesiredCapabilities;
    import org.testng.annotations.Test;
    
    public class WordPad {
    WebDriver dr;
    
    @Test
    public void testApp() throws MalformedURLException, InterruptedException {
        String apkpath = "D:\\apkdump\\blackcarbon.wordpad.apk";
        File app = new File (apkpath);
        DesiredCapabilities capabilities= new DesiredCapabilities();
        capabilities.setCapability(CapabilityType.BROWSER_NAME,"");
        capabilities.setCapability("deviceName","TestOneAdb1");
        capabilities.setCapability("appium-version", "1.2.4.1");
        capabilities.setCapability("platformName","Android");
        capabilities.setCapability("app",app.getAbsolutePath());
        capabilities.setCapability("appPackage", "com.wordpad");
        capabilities.setCapability("appActivity", "com.wordpad.Main");
        dr = new AppiumDriver(new URL("http://127.0.0.1:4723/wd/hub"),capabilities);                    
        dr.manage().timeouts().implicitlyWait(5, TimeUnit.SECONDS);
        dr.quit();      
    }   
    }
    

    但我仍然收到错误:

      

    info:[debug] UiAutomator正常关闭

         

    错误:无法启动Appium会话,错误是:错误:用于启动应用程序的活动不存在或无法启动!确保它存在且是可启动的活动

         

    info:[debug]清理android对象

         

    info:[debug]清理appium会话

         

    info:[debug]错误:用于启动应用程序的活动不存在或无法启动!确保它存在且是可启动的活动

    at null.<anonymous> (D:\MobileTesting\Appium\node_modules\appium\node_modules\appium-adb\lib\adb.js:1143:21)
    
    at null.<anonymous> (D:\MobileTesting\Appium\node_modules\appium\node_modules\appium-adb\lib\adb.js:172:9)
    
    at ChildProcess.exithandler (child_process.js:635:7)
    
    at ChildProcess.EventEmitter.emit (events.js:98:17)
    
    at maybeClose (child_process.js:743:16)
    
    at Process.ChildProcess._handle.onexit (child_process.js:810:5)
    
         

    info:[debug]响应客户端错误:{“status”:33,“value”:{“message”:“无法创建新会话。(原始错误:用于启动应用程序的活动没有' t存在或无法启动!确保它存在且是可启动的活动)“,”origValue“:”用于启动应用程序的活动不存在或无法启动!确保它存在且是可启动的活动“}, “的sessionId”:空}

         信息:[37m&lt; - POST / wd / hub / session [39m [31m500 [39m [90m 51290.254 ms - 346 [39m [90m [39m]   我尝试了什么:

         
        
    1. 在模拟器上手动安装应用程序并检查其是否正常工作:它正在运行
    2.   
    3. 通过代码安装应用程序后:我可以在模拟器上手动播放,它完全正常。
    4.   
    5. 从最新的Appium降级1.1.0版本但尝试了同样的错误
    6.   
    7. 在代码中指定Appium版本功能,尝试但仍然是相同的错误。
    8.   
  4. 让我知道我缺少什么,如何在安装后启动应用程序?

3 个答案:

答案 0 :(得分:0)

可能的原因:

1。 似乎问题是还有一个缺失的功能或不正确的Android版本:

capabilities.setCapability("platformVersion", "4.4");

因为你没有使用&#39; Selendroid&#39;作为自动化模式,因此您用于测试的仿真器或设备应该是Android 4.2+。

请确认并在列表中提及上述所需功能。

2。 而不是使用

capabilities.setCapability("appActivity", "com.wordpad.Main");

尝试

capabilities.setCapability("appActivity", ".Main");

答案 1 :(得分:0)

我有类似的问题。我的错误消息也是

  

“用于启动应用的活动不存在或无法启动!制作   确定它存在并且是可启动的活动“。

在我的情况下,我在两个地方设置了不同的主要活动。

第一个 - Appium GUI:

Appium --> Android Settings --> Main Activity, Package and App Path

第二个 - 在代码中:

capabilities.setCapability("appPackage", "com.company.AppName");
capabilities.setCapability("appActivity", "com.company.AppName.AppMainActivity");

上述两个必须保持一致 - 相同的包装和活动。

答案 2 :(得分:0)

我遇到了同样的错误,原来是因为我改变了我的项目目录名,所以apk的路径错了。肯定是一个愚蠢的错误,但为了以防万一,可能值得检查。