Гибридное приложение дает сбой при тестировании Amazon Web Service Appium

Я пытаюсь протестировать гибридное приложение на Amazon Web Services Device Farm. Вылетает. Работают ли тесты Appium для гибридных приложений на AWS Device Farm? Говорят, работают ... а всегда ли работают?

Я предполагаю, что сбой связан с несоответствием между Chrome-версией AWS и версией устройства Chrome, но я понятия не имею, правильно ли это.

Я хотел бы знать, есть ли какие-либо возможности Appium или что-то для исправления ошибок веб-просмотра в гибридных приложениях. Я не могу найти подобного примера.

Тест вылетает с такой ошибкой:

test failed: An unknown server-side error occurred while processing the command. Original error: Error occured while starting App. Original error: Error executing adbExec. 
Original error: 'Command '/opt/dev/android-sdk-linux/platform-tools/adb -P 5037 -s FA75W0301076 shell am start -W -n com.hola.mundo/.MainActivity -S -a android.intent.action.MAIN -c android.intent.category.LAUNCHER -f 0x10200000' timed out after 20000ms'; Stderr: ''; Code: 'null' (WARNING: The server did not provide any stacktrace information) Command duration or timeout: 100.72 seconds Build info: version: '2.46.0', revision: 
'61506a4624b13675f24581e453592342b7485d71', time: '2015-06-04 10:22:50' System info: host: 'ip-172-31-13-65', ip: '172.31.13.65', os.name: 'Linux', os.arch: 'amd64', os.version: '3.13.0-53-generic', java.version: '1.8.0_131' Driver info: io.appium.java_client.android.AndroidDriver

В логах нахожу такое сообщение:

Device01:16.640  9187  Error  WebViewFactory  Chromium WebView package does not exist

Я создаю простой apk "hello world" следующим образом:

cordova create holamundo com.hola.mundo holamundo
cd holamundo/
cordova platform add android
cordova run android

Это тест Java Appium. Он работает на моих устройствах локально. Тест просто считывает тексты div по умолчанию из приложения Cordova. У меня Appium версии 1.7.1 и Cordova версии 7.1.0 на MacOS High Sierra. Это тест.

public class LoginPage extends BasePage {
    public LoginPage loginPage() throws InterruptedException {
        try {
            Set<String> contextNames = webdriver.getContextHandles();
            System.out.println(contextNames);
            webdriver.context(AndroidSetup.Contexts.WEBVIEW);
            WebElement loginButton = webdriver.findElement(By.id("deviceready"));
            System.out.println("button text: " + loginButton.getText() );
            takeScreenshot("", "pantallazo.png");
            Assert.assertEquals(loginButton.getText(), "DEVICE IS READY");
        }catch (Exception ex){
            ex.printStackTrace();
        }
        return new LoginPage(driver);
    }

    public void takeScreenshot(String path_screenshot, String filename) throws IOException {
        String currentContext = webdriver.getContext();
        System.out.println("current context: " + currentContext + " switching to " + AndroidSetup.Contexts.NATIVE);
        webdriver.context(AndroidSetup.Contexts.NATIVE);
        File srcFile=webdriver.getScreenshotAs(OutputType.FILE);
        File targetFile=new File(path_screenshot + filename);
        FileUtils.copyFile(srcFile,targetFile);
        webdriver.context(currentContext);
        System.out.println("current context: " + webdriver.getContext());
    }
}

Я упаковал и провел этот же тест на Amazon Web Services Device Farm, на Google Pixel, Samsung Galaxy S8 и LGE LG V20. Тест работает на LG и вылетает на телефонах Google Pixel и Samsung.

Изменить: вот меню, в котором прямо сейчас можно выбрать версию Appium на AWS Device Farm. Ошибка возникает во всех трех версиях.

Выбор версии Appium


person santi    schedule 21.12.2017    source источник


Ответы (1)


Ферма устройств AWS поддерживает сервер Appium 1.6.3, 1.6.5 и 1.4.16.

Так что, если он работает для вас локально с сервером appium 1.7.1 (на котором установлена ​​последняя версия chromedriver), нет гарантии, что он будет работать на более старых в облаке: перейдите на локальную версию до 1.6.5 и посмотрите, все еще работает с тем старым хромированным драйвером.

AWS Device Farm игнорирует любые возможности, заданные в коде, поэтому, если в пользовательском интерфейсе AWS нет ничего из во время настройки запуска =>, вы не можете настроить такие возможности, как chromedriverExecutable, для использования вашего настраиваемого двоичного файла chromedriver.

person dmle    schedule 21.12.2017
comment
Привет, @dmle, когда вы создаете тест, он позволяет вам выбирать между версиями Appium 1.6.3, 1.6.5 и 1.7.1. Ни с одним из них это не работает. Это зависит от устройства, а не от версии Appium. - person santi; 03.01.2018