【问题标题】:iOS UI Automation deactivateAppForDuration failureiOS UI 自动化 deactivateAppForDuration 失败
【发布时间】:2012-03-22 19:17:48
【问题描述】:

我正在编写我的第一个 UI 自动化脚本,但在下面的 deactivateAppForDuration 行遇到了故障:

// Verify password field is shown when app is moved to the foreground
UIALogger.logMessage("move app to background");
target.deactivateAppForDuration(10);
UIALogger.logMessage("move app to foreground");

我从 Instruments 得到的错误是:

脚本引发未捕获的 JavaScript 错误:无法对无效元素执行操作:UIAElementNil from target.frontMostApp().switcherScrollView().buttons()["TimeClock"]

我在测试设备上看到的是应用程序已切换到后台,并且正在显示 iOS 应用程序切换器。我可以看到我的应用程序(TimeClock)。从错误消息和设备屏幕中都可以看出,UI 自动化无法选择我的应用程序以转换到前台。

还有其他人遇到过这个问题吗?有解决办法吗?

谢谢。

【问题讨论】:

    标签: ios ios-ui-automation


    【解决方案1】:

    我已经尝试过您的代码,它在这里运行良好。如果您在一个新的 Instruments 文件中运行以下代码(仅此而已),是否可行?

    var target = UIATarget.localTarget();
    UIALogger.logMessage("move app to background");
    target.deactivateAppForDuration(1);
    UIALogger.logMessage("move app to foreground");
    

    请注意:仪器总是向您准确显示错误发生的位置。有时它在它所显示的线上方或下方的几行。 但是:错误发生的原因是正确的。我承认你在这行有一个错误,我猜你是从跳板回来后打电话的:

    Script threw an uncaught JavaScript error: Cannot perform action on invalid element: UIAElementNil from target.frontMostApp().switcherScrollView().buttons()["TimeClock"]
    

    您确定元素switcherScrollView().buttons()["TimeClock"] 存在于您的应用中并且可以访问吗?

    【讨论】:

    • 在这种情况下,switcherScrollView() 表示设备本身而不是应用程序中的切换器控件。 switcherScrollView().buttons()["TimeClock"] 代表他的应用在应用切换器中的图标。
    【解决方案2】:

    我也遇到了同样的问题。重新启动我的设备为我解决了这个问题。

    【讨论】:

    • 在这种情况下重新启动模拟器,但这对我也有用。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-11
    • 2023-02-17
    相关资源
    最近更新 更多