在发布此问题之前,我在Stackoverflow和其他论坛上讨论了这些问题:
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] 我尝试了什么:
- 在模拟器上手动安装应用程序并检查其是否正常工作:它正在运行
- 通过代码安装应用程序后:我可以在模拟器上手动播放,它完全正常。
- 从最新的
Appium
降级1.1.0
版本但尝试了同样的错误- 在代码中指定
醇>Appium
版本功能,尝试但仍然是相同的错误。
让我知道我缺少什么,如何在安装后启动应用程序?
答案 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的路径错了。肯定是一个愚蠢的错误,但为了以防万一,可能值得检查。