首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用于启动应用程序的活动不存在或无法启动Appium

用于启动应用程序的活动不存在或无法启动Appium
EN

Stack Overflow用户
提问于 2019-03-11 15:43:20
回答 3查看 4.3K关注 0票数 1

我正在使用这段代码,无法启动移动设备的应用程序。

代码语言:javascript
复制
package Mobileapp1;
.
.
import io.appium.java_client.remote.MobileCapabilityType;

public class Apptesting
{
    public static void main(String[] args) throws MalformedURLException
    {
    DesiredCapabilities c=new DesiredCapabilities();
    c.setCapability(CapabilityType.BROWSER_NAME, "");
    c.setCapability("deviceName", "ZZ2222HMLF");
    c.setCapability("platformName", "Android");
    c.setCapability("platformversion", "7.0");
    c.setCapability(MobileCapabilityType.APP, "D:\\Appium\\edTheSIS_11_02_2019.apk");
    c.setCapability("noReset", true);
    c.setCapability("autoGrantPermissions", "true");
    c.setCapability("appPackage","com.sisapp.in.sisapp");
    //c.setCapability("appPackage","com.sisapp.in.sisapp.SplashActivity"); Tried not working same issue
    c.setCapability("appActivity", "SplashActivity");
    //c.setCapability("appActivity",".md5b1afd03e09ce5243fd0287b176ff38ea.MainActivity");
    URL U=new URL("http://127.0.0.1:4723/wd/hub");
    WebDriver driver=new AndroidDriver(U,c);
    //driver.findElement(By.linkText("Username")).sendKeys("as@ct");
    }
}

TLDR:

原始错误:用于启动应用程序的活动名称“.SplashActivity”不存在或无法启动!确保它存在并且是一个可启动的活动。

下面是我的错误日志

Log4j:没有为记录器(org.apache.http.client.protocol.RequestAddCookies).找到任何附加程序log4j :警告请正确初始化log4j系统。Log4j:警告参见http://logging.apache.org/log4j/1.2/faq.html#noconfig以获得更多信息。线程"main“org.openqa.selenium.WebDriverException中的异常:在处理命令时发生了一个未知的服务器端错误。原始错误:无法启动“com.sisapp.in.sisapp”应用程序。请访问https://github.com/appium/appium/blob/master/docs/en/writing-running-appium/android/activity-startup.md进行故障排除。原始错误:无法启动“com.sisapp.in.sisapp”应用程序。请访问https://github.com/appium/appium/blob/master/docs/en/writing-running-appium/android/activity-startup.md进行故障排除。原始错误:用于启动应用程序的活动名称“.SplashActivity”不存在或无法启动!确保它存在并且是一个可启动的活动构建信息:版本:'3.8.1',修订:'6e95a6684b',时间:'2017-12-01T19:05:14.666Z‘系统信息:主机:’DELL30 30‘,ip:'10.10.4.222',os.name:'Windows 7',os.arch:’and 64‘,os.version:’6.1,‘java.version:'1.8.0_151‘驱动程序信息: driver.version: AndroidDriver远程堆栈跟踪: UnknownError:处理命令时发生了一个未知的服务器端错误。原始错误:无法启动“com.sisapp.in.sisapp”应用程序。请访问https://github.com/appium/appium/blob/master/docs/en/writing-running-appium/android/activity-startup.md进行故障排除。原始错误:无法启动“com.sisapp.in.sisapp”应用程序。请访问https://github.com/appium/appium/blob/master/docs/en/writing-running-appium/android/activity-startup.md进行故障排除。原始错误:用于启动应用程序的活动名称“.SplashActivity”不存在或无法启动!确保它存在,并且是(C:\Users\arvind\AppData\Local\appium-desktop\app-1.10.0\resources\app\node_modules\appium-base-driver\lib\protocol\errors.js:826:9) at asyncHandler (C:\Users\arvind\AppData\Local\appium-desktop\app-1.10.0\resources\app\node_modules\appium-base-driver\lib\protocol\protocol.js:447:37)的getResponseForW3CError的可启动活动。(内部/process/next_tick.js:68:7)在sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native方法)在sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown来源)在sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown源)在java.lang.reflect.Constructor.newInstance(Unknown源)在org.openqa.selenium.remote.W3CHandshakeResponse.lambda$new$0(W3CHandshakeResponse.java:57) at org.openqa.selenium.remote.W3CHandshakeResponse.lambda$getResponseFunction$2(( org.openqa.selenium.remote.ProtocolHandshake.lambda$createSession$0(ProtocolHandshake.java:123) at java.util.stream.ReferencePipeline$3$1.accept(Unknown Source) at java.util.Spliterators$ArraySpliterator.tryAdvance(Unknown Source( java.util.stream.ReferencePipeline.forEachWithCancel(Unknown Source)在java.util.stream.AbstractPipeline.copyIntoWithCancel(Unknown Source) ( java.util.stream.AbstractPipeline.copyInto(Unknown Source) ( java.util.stream.AbstractPipeline.wrapAndCopyInto )(未知源)在java.util.stream.FindOps$FindOp.evaluateSequential(Unknown源)在java.util.stream.AbstractPipeline.evaluate(Unknown源)在java.util.stream.ReferencePipeline.findFirst(Unknown源) org.openqa.selenium.remote.ProtocolHandshake.createSession(ProtocolHandshake.java:126) at org.openqa.selenium.remote.ProtocolHandshake.createSession(ProtocolHandshake.java:126) at org.openqa.selenium.remote.ProtocolHandshake.createSession(ProtocolHandshake.java:73) at org.openqa.selenium.remote.HttpCommandExecutor.execute(HttpCommandExecutor.java:142)io.appium.java_client.remote.AppiumCommandExecutor.execute(AppiumCommandExecutor.java:89) at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:601) at io.appium.java_client.DefaultGenericMobileDriver.execute(DefaultGenericMobileDriver.java:42) at io.appium.java_client.AppiumDriver.execute(AppiumDriver.java:1) at io.appium.java_client.android.AndroidDriver.execute(AndroidDriver.java:1) at org.openqa.selenium.remote.RemoteWebDriver.startSession(RemoteWebDriver.java:219) at org.openqa.selenium.remote.RemoteWebDriver.(RemoteWebDriver.java:142) at io.appium.java_client.DefaultGenericMobileDriver.(DefaultGenericMobileDriver.java:38) at io.appium.java_client.AppiumDriver.(AppiumDriver.java:83) at io.appium.java_client.AppiumDriver.(AppiumDriver.java:93) at io.appium.java_client.android.AndroidDriver.(AndroidDriver.java:72) at Mobileapp1.Apptesting.main(Apptesting.java:29)

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2019-03-12 05:42:55

如果使用的是应用程序功能,则不需要指定appPackageappActivity功能。另外,如果您没有测试本地应用程序,browserName功能就不是必需的。

代码语言:javascript
复制
DesiredCapabilities c=new DesiredCapabilities();
c.setCapability("deviceName", "ZZ2222HMLF");
c.setCapability("platformName", "Android");
c.setCapability("app", "D:\\Appium\\edTheSIS_11_02_2019.apk");
c.setCapability("noReset", true);
c.setCapability("autoGrantPermissions", "true");
URL U=new URL("http://127.0.0.1:4723/wd/hub");
AppiumDriver<MobileElement> driver=new AndroidDriver(U,c);

如果您想了解应用程序的appPackageappActivity,可以将设备连接到计算机,打开应用程序并运行以下命令:

代码语言:javascript
复制
adb shell
dumpsys window windows | grep -E 'mFocusedApp'

这将显示您的appActivity和appPackage。要了解更多关于它的信息,您可以查看此链接

票数 3
EN

Stack Overflow用户

发布于 2019-03-11 16:01:37

对于我来说,使用"appActivity“的完整路径通常有效:

代码语言:javascript
复制
c.setCapability("appPackage","com.sisapp.in.sisapp.SplashActivity");

或者您的开始活动有不同的名称。然后,在通过亚行手动启动应用程序之后,尝试找出当前活动的真实名称:

代码语言:javascript
复制
adb shell dumpsys window windows | grep -E 'mCurrentFocus|mFocusedApp'

代码语言:javascript
复制
adb shell dumpsys activity
票数 2
EN

Stack Overflow用户

发布于 2019-03-11 21:28:04

尝试下面提到的依赖项,您可以启动应用程序而无需提及MainActivity。

  1. 确保Appium服务器在执行代码之前正在运行。
  2. 要验证您可以使用Appium检查器会话并放置所需的功能,请尝试启动一个会话。这是验证所需功能的最可靠和最简单的方法。 DesiredCapabilities cap =新DesiredCapabilities();appDir =新文件(“.apk文件位置的文件夹路径”);newApp =新文件(appDir,"Project.apk“);/* ANDROID依赖启动*/DesiredCapabilities”“;cap.setCapability("deviceName","Nexus5XAPI26");cap.setCapability("udid","YourDeviceUDID");cap.setCapability("platformName","Android");cap.setCapability("platformVersion","7.1.1");cap.setCapability("automationName","UiAutomator2");cap.setCapability("app",newApp.getAbsolutePath();/* ANDROID依赖结束*/ cap.setCapability("app",newApp.getAbsolutePath());appDriver =新URL(“http://0.0.0.0:4723/wd/hub"”,/*);
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55105538

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档