Как запустить XCUITest, используя appium scripe - PullRequest
0 голосов
/ 26 ноября 2018

Я новичок в написании теста.в одном из наших проектов нам нужно написать XCUITestcase, который выполняется с помощью Appium на perfecto.Perfecto предоставляет отдельную команду для выполнения конкретного тестового примера, предоставляя имя тестового случая в файле config.json.ниже json, который я использую для запуска testcase.

{
  "cloudURL": "mycloud.perfectomobile.com",
  "securityToken": "Mysecurity Token",
  "devices": [
          {"deviceName" : "UDID"}
      ],
  "appPath": "repository://PRIVATE:/<App IPA Path>",
  "testAppPath": "repository://PRIVATE:/<App Runner IPA Path>",
  "testMethodNames": ["ClassName#testLogin"],
  "tags" : [],
  "projectName" : "IOS-XCUITest",
  "projectVersion" : "v10.9-test",
  "jobName" : "LoginInApp",
  "jobNumber" : 2,
  "debug":true,
  "branch" : "master",
  "runUiTests": true,
  "runUnitTests": false
}

Теперь, когда я выполняю команду gradle gradle perfecto-xctest, заданную perfecto.Perfecto perfom ниже шага

  • получить устройство по udid, указанному в ключе устройства
  • Установить приложение из указанного пути приложения
  • Установить приложение Runner из указанного пути теста приложения
  • Запустить тестовый сценарий XCUI, заданный testMethodNames

Все отлично работает с командой gradle.Теперь мы пытаемся выполнить то же самое, используя скрипт автоматизации Appium в Java.

вот код автоматизации приложения

public class AppiumTest {

    public static void main(String[] args) throws MalformedURLException, IOException {
    System.out.println("Run started");

    String browserName = "mobileOS";
    DesiredCapabilities capabilities = new         
    DesiredCapabilities(browserName, "", Platform.ANY);


    String host = "mycloud.perfectomobile.com";
    capabilities.setCapability("user", "userEmail");
    capabilities.setCapability("password", "password");

    //TODO: Change your device ID
    capabilities.setCapability("deviceName", "udid of device");

    // Use the automationName capability to define the required framework - Appium (this is the default) or PerfectoMobile.
    capabilities.setCapability("automationName", "XCUITest");

    // Call this method if you want the script to share the devices with the Perfecto Lab plugin.
    PerfectoLabUtils.setExecutionIdCapability(capabilities, host);


    // For iOS:         
  capabilities.setCapability("bundleId","com.apple.test.TestAppUITests-Runner");

    // Name your script
    // capabilities.setCapability("scriptName", "AppiumTest");

    IOSDriver driver = new IOSDriver(new URL("https://" + host + "/nexperience/perfectomobile/wd/hub"), capabilities);
    driver.manage().timeouts().implicitlyWait(15, TimeUnit.SECONDS);


    // Reporting client. For more details, see http://developers.perfectomobile.com/display/PD/Reporting
    PerfectoExecutionContext perfectoExecutionContext = new PerfectoExecutionContext.PerfectoExecutionContextBuilder()
    .withProject(new Project("My Project", "1.0"))
    .withJob(new Job("My Job", 45))
    .withContextTags("tag1")
    .withWebDriver(driver)
    .build();

    ReportiumClient reportiumClient = new ReportiumClientFactory().createPerfectoReportiumClient(perfectoExecutionContext);


    try {
        reportiumClient.testStart("My test name", new TestContext("tag2", "tag3"));
        driver.manage().timeouts().implicitlyWait(2, TimeUnit.SECONDS);


        driver.launchApp();
        driver.manage().timeouts().implicitlyWait(3, TimeUnit.SECONDS);

        driver.manage().timeouts().implicitlyWait(3, TimeUnit.SECONDS);

        reportiumClient.testStop(TestResultFactory.createSuccess());
    } catch (Exception e) {
        reportiumClient.testStop(TestResultFactory.createFailure(e.getMessage(), e));
        e.printStackTrace();
    } finally {
        try {
            driver.quit();

            // Retrieve the URL to the DigitalZoom Report (= Reportium Application) for an aggregated view over the execution
            String reportURL = reportiumClient.getReportUrl();
            System.out.println("reportURL " + reportURL);
            // Retrieve the URL to the Execution Summary PDF Report
            String reportPdfUrl = (String)(driver.getCapabilities().getCapability("reportPdfUrl"));
            System.out.println("reportPdfUrl " + reportURL);
            // For detailed documentation on how to export the Execution Summary PDF Report, the Single Test report and other attachments such as
            // video, images, device logs, vitals and network files - see http://developers.perfectomobile.com/display/PD/Exporting+the+Reports

        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    System.out.println("Run ended");
    }


}

Когда я запускаю над файлом Java, запускается мой бегун, но затем продолжается попытка запустить бегун.Моя проблема состоит в том, чтобы запустить мой конкретный тестовый пример, который я пишу в XCUITest.Я не знаю, какие возможности я должен установить и какой метод нужно использовать для выполнения конкретного теста с использованием скрипта Appium.Я хочу выполнить автоматизацию с использованием XCUITestcase, и это должно начаться с использованием скрипта Appium.

Примечание: - вышеописанный скрипт appium работает нормально, устройство получает, но я не знаю, как выполнить тестовый сценарий XCUI

...