Как откинуть пользователя на домашнюю страницу без использования навигации в приложении IOS - PullRequest
0 голосов
/ 27 февраля 2019

Фон - у меня есть приложение Ios Native, для которого я автоматизирую тестовые сценарии в XCUITest.Текущий поток тестовых примеров в классе является устройством настройки, установите приложение, откройте приложение-> логин -> выполнить действие

для второго метода тестового примера, который он выходит первым из первого действия тестового примера с помощью навигации и запускает

Есть ли способ, что после завершения каждого метода теста запускается прямой переход на домашнюю страницу без использования навигации?Навигация требует дополнительного времени для запуска большого набора.

Ответы [ 2 ]

0 голосов
/ 27 февраля 2019

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

Редактировать схему> Выполнить> добавить «UITEST» в аргументы, передаваемые при запуске

Например, в ваших кодах определите

class AppDelegate: UIResponder, UIApplicationDelegate {

    var uiTestModeKey = "UITEST"
    static var uiTestMode = false
    func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
        // Override point for customization after application launch.
        if (CommandLine.arguments.contains(uiTestModeKey)) {
           AppDelegate.uiTestMode = true
        }
        return true
    }
}

и в части, которую вы хотите быстро вернуться назад, вы можете определить что-то вроде:

func onActionComplete() {
    if (AppDelegate.uiTestMode) {
        navigationController?.popToRootViewController(animated: false)
        //Or set the window to a new instance like
        //UIApplication.shared.keyWindow?.rootViewController = HomeViewController()
    }
}
0 голосов
/ 27 февраля 2019

Swift 4.2

Я думаю, что не понимаю вашего вопроса, но если вы хотите перейти на домашнюю страницу без навигации, вы можете использовать эту строку кода:

UIApplication.shared.keyWindow?.rootViewController = HomeViewController()

и если вы не хотите прыгать с небольшой анимацией, используйте это:

DispatchQueue.main.async {
            guard let window = UIApplication.shared.keyWindow else { return }
            UIView.transition(with: window, duration: 0.5, options: .allowUserInteraction, animations: {
                UIApplication.shared.keyWindow?.rootViewController = HomeViewController()
            }, completion: { completed in
            })
        }
...