Selendroid, работающий со Skype apk; не с другими приложениями

Нужна ваша помощь с selendroid. Я новичок в этом и все еще учусь трюкам.

Пробовал с базовым примером приложения selendroid и с Skype apk, все работало отлично. Однако при попытке использовать apk других приложений, таких как tripadvisor и dropbox, я продолжаю получать сообщение об ошибке.

Ниже приведен мой код и ошибка из консоли. Я использую сведения о версии из манифеста xml.

Дальнейшее исследование. Я сравнил xml-файл манифеста Skype, Dropbox и т. д. и увидел тег разрешения с уровнем защиты "Подпись" для Dropbox, tripadvisor. Однако этого нет в файле манифеста скайпа. Может ли это мешать нашему коду.

Если да, то есть ли обходной путь?

Любая помощь в этом очень ценится.

Код -

package testSelendroid;

import java.net.URL;

import io.selendroid.SelendroidCapabilities;
import io.selendroid.SelendroidDriver;
import io.selendroid.device.DeviceTargetPlatform;

import org.openqa.selenium.WebDriver;

public class selendroidNativeAppTest {


public static void main(String Args[])
{
    WebDriver driver = null ;

    //Below versions from Manifest files
    //com.skype.raider:3.2.0.6673
    //com.dropbox.android:2.3.8
    //io.selendroid.testapp:0.10.0

    SelendroidCapabilities caps = new SelendroidCapabilities("com.dropbox.android:2.3.8") ;
    System.out.println("I am here");
    caps.setPlatformVersion(DeviceTargetPlatform.ANDROID19);
    System.out.println("I just reached here");
    caps.setEmulator(true);
    System.out.println("Passed emulator");
    //caps.setCapability(CapabilityType.BROWSER_NAME, "Android");
    //caps.setCapability("app-package", "com.tripadvisor.tripadvisor:8.7.1-release");

    try {
        System.out.println("Let me try");
        driver = new SelendroidDriver(new URL("http://localhost:4444/wd/hub"), caps);
        System.out.println("Driver ...");
        driver.switchTo().window("NATIVE_APP");
        System.out.print("Got the app");
    } catch (Exception e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }  

}
}

Приставка -

I am here
I just reached here
Passed emulator
Let me try
org.openqa.selenium.SessionNotCreatedException: Error occurred while starting selendroid-server on the device
io.selendroid.exceptions.SelendroidException: Error occurred while starting selendroid-server on the device
    at io.selendroid.android.impl.AbstractDevice.startSelendroid(AbstractDevice.java:235)
    at io.selendroid.server.model.SelendroidStandaloneDriver.createNewTestSession(SelendroidStandaloneDriver.java:290)
    at io.selendroid.server.handler.CreateSessionHandler.handle(CreateSessionHandler.java:42)
    at io.selendroid.server.SelendroidServlet.handleRequest(SelendroidServlet.java:142)
    at io.selendroid.server.BaseServlet.handleHttpRequest(BaseServlet.java:70)
    at org.webbitserver.netty.NettyHttpControl.nextHandler(NettyHttpControl.java:78)
    at org.webbitserver.netty.NettyHttpControl.nextHandler(NettyHttpControl.java:62)
    at org.webbitserver.handler.PathMatchHandler.handleHttpRequest(PathMatchHandler.java:33)
    at org.webbitserver.netty.NettyHttpControl.nextHandler(NettyHttpControl.java:78)
    at org.webbitserver.netty.NettyHttpControl.nextHandler(NettyHttpControl.java:62)
    at org.webbitserver.handler.DateHeaderHandler.handleHttpRequest(DateHeaderHandler.java:21)
    at org.webbitserver.netty.NettyHttpControl.nextHandler(NettyHttpControl.java:78)
    at org.webbitserver.netty.NettyHttpControl.nextHandler(NettyHttpControl.java:62)
    at org.webbitserver.handler.ServerHeaderHandler.handleHttpRequest(ServerHeaderHandler.java:25)
    at org.webbitserver.netty.NettyHttpControl.nextHandler(NettyHttpControl.java:78)
    at org.webbitserver.netty.NettyHttpControl.nextHandler(NettyHttpControl.java:67)
    at org.webbitserver.netty.NettyHttpChannelHandler$2.run(NettyHttpChannelHandler.java:72)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
    at java.lang.Thread.run(Unknown Source)
Caused by: java.lang.Throwable: android.util.AndroidException: INSTRUMENTATION_FAILED: io.selendroid.com.dropbox.android/io.selendroid.ServerInstrumentation
    at com.android.commands.am.Am.runInstrument(Am.java:865)
    at com.android.commands.am.Am.onRun(Am.java:282)
    at com.android.internal.os.BaseCommand.run(BaseCommand.java:47)
    at com.android.commands.am.Am.main(Am.java:76)
    at com.android.internal.os.RuntimeInit.nativeFinishInit(Native Method)
    at com.android.internal.os.RuntimeInit.main(RuntimeInit.java:243)
    at dalvik.system.NativeStart.main(Native Method)

Details:
INSTRUMENTATION_STATUS: id=ActivityManagerService
INSTRUMENTATION_STATUS: Error=Unable to find instrumentation target package: com.dropbox.android
INSTRUMENTATION_STATUS_CODE: -1
android.util.AndroidException: INSTRUMENTATION_FAILED: io.selendroid.com.dropbox.android/io.selendroid.ServerInstrumentation
    at com.android.commands.am.Am.runInstrument(Am.java:865)
    at com.android.commands.am.Am.onRun(Am.java:282)
    at com.android.internal.os.BaseCommand.run(BaseCommand.java:47)
    at com.android.commands.am.Am.main(Am.java:76)
    at com.android.internal.os.RuntimeInit.nativeFinishInit(Native Method)
    at com.android.internal.os.RuntimeInit.main(RuntimeInit.java:243)
    at dalvik.system.NativeStart.main(Native Method)

    ... 20 more

Command duration or timeout: 320.45 seconds
Build info: version: 'unknown', revision: 'unknown', time: 'unknown'
System info: host: 'ECXIPSAGT6504', ip: '172.25.2.91', os.name: 'Windows Server 2008 R2', os.arch: 'amd64', os.version: '6.1', java.version: '1.7.0_51'
Driver info: io.selendroid.SelendroidDriver
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
    at java.lang.reflect.Constructor.newInstance(Unknown Source)
    at org.openqa.selenium.remote.ErrorHandler.createThrowable(ErrorHandler.java:193)
    at org.openqa.selenium.remote.ErrorHandler.throwIfResponseFailed(ErrorHandler.java:145)
    at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:595)
    at org.openqa.selenium.remote.RemoteWebDriver.startSession(RemoteWebDriver.java:240)
    at org.openqa.selenium.remote.RemoteWebDriver.<init>(RemoteWebDriver.java:126)
    at org.openqa.selenium.remote.RemoteWebDriver.<init>(RemoteWebDriver.java:139)
    at io.selendroid.SelendroidDriver.<init>(SelendroidDriver.java:63)
    at testSelendroid.selendroidNativeAppTest.main(selendroidNativeAppTest.java:36)
Caused by: io.selendroid.exceptions.SelendroidException: Error occurred while starting selendroid-server on the device
io.selendroid.exceptions.SelendroidException: Error occurred while starting selendroid-server on the device
    at io.selendroid.android.impl.AbstractDevice.startSelendroid(AbstractDevice.java:235)
    at io.selendroid.server.model.SelendroidStandaloneDriver.createNewTestSession(SelendroidStandaloneDriver.java:290)
    at io.selendroid.server.handler.CreateSessionHandler.handle(CreateSessionHandler.java:42)
    at io.selendroid.server.SelendroidServlet.handleRequest(SelendroidServlet.java:142)
    at io.selendroid.server.BaseServlet.handleHttpRequest(BaseServlet.java:70)
    at org.webbitserver.netty.NettyHttpControl.nextHandler(NettyHttpControl.java:78)
    at org.webbitserver.netty.NettyHttpControl.nextHandler(NettyHttpControl.java:62)
    at org.webbitserver.handler.PathMatchHandler.handleHttpRequest(PathMatchHandler.java:33)
    at org.webbitserver.netty.NettyHttpControl.nextHandler(NettyHttpControl.java:78)
    at org.webbitserver.netty.NettyHttpControl.nextHandler(NettyHttpControl.java:62)
    at org.webbitserver.handler.DateHeaderHandler.handleHttpRequest(DateHeaderHandler.java:21)
    at org.webbitserver.netty.NettyHttpControl.nextHandler(NettyHttpControl.java:78)
    at org.webbitserver.netty.NettyHttpControl.nextHandler(NettyHttpControl.java:62)
    at org.webbitserver.handler.ServerHeaderHandler.handleHttpRequest(ServerHeaderHandler.java:25)
    at org.webbitserver.netty.NettyHttpControl.nextHandler(NettyHttpControl.java:78)
    at org.webbitserver.netty.NettyHttpControl.nextHandler(NettyHttpControl.java:67)
    at org.webbitserver.netty.NettyHttpChannelHandler$2.run(NettyHttpChannelHandler.java:72)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
    at java.lang.Thread.run(Unknown Source)
Caused by: java.lang.Throwable: android.util.AndroidException: INSTRUMENTATION_FAILED: io.selendroid.com.dropbox.android/io.selendroid.ServerInstrumentation
    at com.android.commands.am.Am.runInstrument(Am.java:865)
    at com.android.commands.am.Am.onRun(Am.java:282)
    at com.android.internal.os.BaseCommand.run(BaseCommand.java:47)
    at com.android.commands.am.Am.main(Am.java:76)
    at com.android.internal.os.RuntimeInit.nativeFinishInit(Native Method)
    at com.android.internal.os.RuntimeInit.main(RuntimeInit.java:243)
    at dalvik.system.NativeStart.main(Native Method)

Details:
INSTRUMENTATION_STATUS: id=ActivityManagerService
INSTRUMENTATION_STATUS: Error=Unable to find instrumentation target package: com.dropbox.android
INSTRUMENTATION_STATUS_CODE: -1
android.util.AndroidException: INSTRUMENTATION_FAILED: io.selendroid.com.dropbox.android/io.selendroid.ServerInstrumentation
    at com.android.commands.am.Am.runInstrument(Am.java:865)
    at com.android.commands.am.Am.onRun(Am.java:282)
    at com.android.internal.os.BaseCommand.run(BaseCommand.java:47)
    at com.android.commands.am.Am.main(Am.java:76)
    at com.android.internal.os.RuntimeInit.nativeFinishInit(Native Method)
    at com.android.internal.os.RuntimeInit.main(RuntimeInit.java:243)
    at dalvik.system.NativeStart.main(Native Method)

    ... 20 more

person Scoffield    schedule 09.06.2014    source источник


Ответы (1)


Проверьте идентификатор SelendroidCapabilities. Сначала запустите сервер, затем перейдите в браузер и запустите URL-адрес локального хоста на порту 4444.

И если сервер возвращает действительный JSON, проверьте идентификатор приложения и вставьте его в свои SelendroidCapabilities("com.dropbox.android:2.3.8")

Затем запустите проект JAVA. Вы избавитесь от этой проблемы. Если вы все еще обнаружите какие-либо проблемы. скажи мне удачи

person Abdul Rehman    schedule 08.09.2014