我正在使用此代码,但无法在移动设备上启动应用程序
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)
答案 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