Как запустить уже установленное приложение с iPhone с помощью appium

Я пишу скрипт автоматизации, используя Java + TestNG + Appium.

В тестовом сценарии я пытаюсь запустить уже установленное приложение на iphone. (Коробка в данном случае). Коробка содержит некоторый файл MS Office, к которому мне нужно получить доступ. Я не очень уверен, как я могу этого добиться.

Я пробовал несколько вариантов, таких как извлечение файла .app из iTunes и развертывание с помощью Appium, но безуспешно.

Может кто-нибудь, пожалуйста, направьте меня, если это возможно. Если да, то как?


person amit joshi    schedule 21.09.2016    source источник
comment
пожалуйста, покажите свой путь, который вы пробовали.   -  person Amit Srivastava    schedule 21.09.2016
comment
Я установил приложение Box из iTunes. Перешел в папку /Users/admin/Music/iTunes/iTunes Media/Mobile Applications. Извлеченный спа-файл из приложения. Использовал такой же.   -  person amit joshi    schedule 21.09.2016
comment
Цель состоит в том, чтобы просто запустить приложение Box, установленное на iPhone. Мне нужно открыть файлы MS Office из приложения Box. Если запуск стороннего приложения невозможен, есть ли альтернативный способ сделать это?   -  person amit joshi    schedule 21.09.2016
comment
Вы можете передать bundleId, и он найдет приложение, если оно уже установлено на iPhone. Вам не нужно иметь файл .app или .ipa, если приложение уже установлено на устройстве.   -  person Amit Srivastava    schedule 21.09.2016
comment
Не могли бы вы вставить фрагмент кода. Так как я наткнулся на это решение, но точно не понял, как его реализовать. У меня есть идентификатор пакета для приложения Box.   -  person amit joshi    schedule 21.09.2016
comment
вы установили приложение из itunes???   -  person Amit Srivastava    schedule 21.09.2016
comment
Да. Бокс устанавливается из iTunes.   -  person amit joshi    schedule 21.09.2016
comment
если вы установили живое приложение, это невозможно, пожалуйста, смотрите мой ответ....   -  person Amit Srivastava    schedule 21.09.2016
comment
Спасибо за ответ, Амит. Просто хотел знать, нет ли альтернативного способа добиться этого. Точно так же, как пакет приложения и активность приложения на платформе Android. ИЛИ что-то вроде поиска элементов с помощью Xpath на главном экране?   -  person amit joshi    schedule 21.09.2016


Ответы (3)


Автоматизируйте предустановленное приложение по следующему сценарию.

1. Это будет работать только для приложений, подписанных сертификатом РАЗРАБОТКИ.

2. Это НЕ будет работать для приложений, подписанных сертификатом DISTRIBUTION.

3. Если вы создали приложение с профилем обеспечения разработчика и создали его самостоятельно. Или загрузите его с помощью testFlight и подпишите с помощью профиля обеспечения разработки.

4. Это связано с тем, что инструменты Apple не позволяют вам взаимодействовать с теми приложениями, которые работают. (Даже если вы знали bundleId)

если ваше приложение находится в режиме разработки, выполните следующие действия: 1. Идентификатор пакета приложения, установленного на устройстве. Используйте это как возможность приложения.

  1. Следите за настоящими устройствами Appium. руководство (замените любую ссылку .ipa/.app на bundleId)

В дополнение к вашим обычным desiredCapabilities (например, platformName, platformVersion, deviceName).. это должны быть ваши desiredCapabilities:

Для предустановленных приложений

desiredCaps['app'] = 'yourbindleID'

Уникальный идентификатор устройства

desiredCaps['udid'] = '1824y983h2849gh2498'
person Amit Srivastava    schedule 21.09.2016
comment
Я достиг этого, используя Xpath. Отправляя событие экрана HOME с помощью сценария Apple и получая доступ к другим приложениям по их Xpath. - person amit joshi; 29.09.2016
comment
Привет @Amit Я пытаюсь открыть приложение через appium. Я получаю сообщение Не удалось создать сеанс WDA. Что я сделал? : Установил paytm.app из itunes. Я написал все возможности, идентификатор пакета и местоположение приложения paytm, открыл веб-драйвер с помощью xcode и вошел в систему. Запуск кода с appium. Он может установить приложение, но не может его запустить (оно открывается и закрывается за считанные секунды). Помогите мне, пожалуйста - person VSK; 22.05.2017
comment
Привет @VKS, немного неясно, что ты пробовал. Как вам удалось получить файл PayTM .App. Кроме того, PayTM открыл веб-драйвер с помощью xcode и выполнил вход в систему . Я не совсем уловил эту часть. Проблема, которую вы наблюдаете, может быть связана с несоответствием версии Xcode, которая подписывает приложение, и версию appium, которую вы используете. Вы можете проверить один раз? - person amit joshi; 23.05.2017

это работает для меня

HashmMap<String, Object> args = new HashMap<String,Object>();
args.put("bundleId","*YOUR_APP_BUNDLEID*");
driver.executeScript("mobile: launchApp", args);
person Chad Esguerra    schedule 22.10.2020

См. ниже фрагмент кода:

cap.setCapability(IOSMobileCapabilityType.APP_NAME, {appName});

Эта возможность является НАИБОЛЕЕ важной возможностью автоматического открытия приложения, если оно уже установлено на мобильном устройстве.

    public static IOSDriver<IOSElement> capabilities() throws IOException {
    
    //Configure absolute path of the .ipa file

    FileInputStream fis = new FileInputStream(System.getProperty("user.dir")+"//automation.properties");
    System.out.println(fis);
    Properties prop = new Properties();
    prop.load(fis);     

    File f = new File("src/test/resources");
    File fs = new File(f, (String)prop.get("iOSAppName"));
    
    DesiredCapabilities cap = new DesiredCapabilities(); 
    cap.setCapability(MobileCapabilityType.PLATFORM_NAME, (String)prop.get("iOSPlatformName"));
    cap.setCapability(MobileCapabilityType.UDID, (String)prop.get("iDeviceUDID"));
    cap.setCapability(MobileCapabilityType.AUTOMATION_NAME, AutomationName.IOS_XCUI_TEST);
    cap.setCapability(MobileCapabilityType.DEVICE_NAME, "iPhone");

    driveriOS = new IOSDriver<IOSElement>(new URL("http://127.0.0.1:4725/wd/hub"), cap);
    
    //Check app is already installed if NOT install app to device automatically
    if(driveriOS.isAppInstalled("com.test.app")==false)
    {
    cap.setCapability(MobileCapabilityType.APP, fs.getAbsolutePath());
    }
    
    //cap.setCapability(MobileCapabilityType.BROWSER_NAME, (String)prop.get("iOSBrowserType"));
    cap.setCapability(MobileCapabilityType.PLATFORM_VERSION, (String)prop.get("iOSPlatformVersion"));
    cap.setCapability(IOSMobileCapabilityType.APP_NAME, "{appName}"); //Provide your app name here
    cap.setCapability(IOSMobileCapabilityType.BUNDLE_ID, (String)prop.get("updateWDABundleId"));
    cap.setCapability("xcodeSigningId", "iPhone Developer");
    cap.setCapability("xcodeOrgId", (String)prop.get("xcodeOrgId"));

    driveriOS = new IOSDriver<IOSElement>(new URL("http://127.0.0.1:4725/wd/hub"), cap);
    driveriOS.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS); 
    stepRecorder(Status.INFO, "iOS Driver initiated");

    return driveriOS; 

}
person KavinduWije    schedule 24.12.2020