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

时间:2019-03-11 15:43:21

标签: selenium automation automated-tests appium

我正在使用此代码,但无法在移动设备上启动应用程序

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:WARN找不到记录器的附加程序   (org.apache.http.client.protocol.RequestAddCookies)。 log4j:请警告   正确初始化log4j系统。 log4j:WARN请参阅   http://logging.apache.org/log4j/1.2/faq.html#noconfig了解更多信息。   线程“主” org.openqa.selenium.WebDriverException中的异常:An   处理命令时发生未知的服务器端错误。   原始错误:无法启动“ 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',ip:'10 .10.4.222',操作系统名称:'Windows 7',os.arch:   'amd64',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”   用于启动该应用程序不存在或无法启动!确保   它存在并且是可启动的活动       在getResponseForW3CError(C:\ Users \ arvind \ AppData \ Local \ appium-desktop \ app-1.10.0 \ resources \ app \ node_modules \ appium-base-driver \ lib \ protocol \ errors.js:826:9)       在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)       在process._tickCallback(内部/进程/next_tick.js:68:7)在sun.reflect.NativeConstructorAccessorImpl.newInstance0(本地方法)     在sun.reflect.NativeConstructorAccessorImpl.newInstance(未知   来源)   sun.reflect.DelegatingConstructorAccessorImpl.newInstance(未知   源)位于java.lang.reflect.Constructor.newInstance(未知源)     在   org.openqa.selenium.remote.W3CHandshakeResponse.lambda $ new $ 0(W3CHandshakeResponse.java:57)     在   org.openqa.selenium.remote.W3CHandshakeResponse.lambda $ getResponseFunction $ 2(W3CHandshakeResponse.java:104)     在   org.openqa.selenium.remote.ProtocolHandshake.lambda $ createSession $ 0(ProtocolHandshake.java:123)     在java.util.stream.ReferencePipeline $ 3 $ 1.accept(未知源)在   java.util.Spliterators $ ArraySpliterator.tryAdvance(未知源)   java.util.stream.ReferencePipeline.forEachWithCancel(未知源)     在java.util.stream.AbstractPipeline.copyIntoWithCancel(未知   来源)java.util.stream.AbstractPipeline.copyInto(未知来源)     在java.util.stream.AbstractPipeline.wrapAndCopyInto(未知来源)     在java.util.stream.FindOps $ FindOp.evaluateSequential(未知源)     在java.util.stream.AbstractPipeline.evaluate(未知源)在   java.util.stream.ReferencePipeline.findFirst(未知源),位于   org.openqa.selenium.remote.ProtocolHandshake.createSession(ProtocolHandshake.java:126)     在   org.openqa.selenium.remote.ProtocolHandshake.createSession(ProtocolHandshake.java:73)     在   org.openqa.selenium.remote.HttpCommandExecutor.execute(HttpCommandExecutor.java:142)     在   io.appium.java_client.remote.AppiumCommandExecutor.execute(AppiumCommandExecutor.java:89)     在   org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:601)     在   io.appium.java_client.DefaultGenericMobileDriver.execute(DefaultGenericMobileDriver.java:42)     在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:219)     在   org.openqa.selenium.remote.RemoteWebDriver。(RemoteWebDriver.java:142)     在   io.appium.java_client.DefaultGenericMobileDriver。(DefaultGenericMobileDriver.java:38)     在io.appium.java_client.AppiumDriver。(AppiumDriver.java:83)     在io.appium.java_client.AppiumDriver。(AppiumDriver.java:93)     在   io.appium.java_client.android.AndroidDriver。(AndroidDriver.java:72)     在Mobileapp1.Apptesting.main(Apptesting.java:29)

2 个答案:

答案 0 :(得分:2)

如果您使用的是 app 功能,则无需指定 appPackage appActivity 功能。另外,如果您不测试本地应用程序,则不需要 browserName 功能。

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);

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

adb shell
dumpsys window windows | grep -E 'mFocusedApp'

这将显示您的appActivity和appPackage。要了解更多信息,可以查看this link

答案 1 :(得分:1)

对于我来说,使用“ appActivity”的完整路径通常是可行的:

c.setCapability("appPackage","com.sisapp.in.sisapp.SplashActivity");

或者您的开始活动使用其他名称。通过ADB手动启动应用后,然后尝试找出当前活动的真实名称:

adb shell dumpsys window windows | grep -E 'mCurrentFocus|mFocusedApp'

adb shell dumpsys activity