首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用UIAutomation处理警报

使用UIAutomation处理警报
EN

Stack Overflow用户
提问于 2010-09-06 20:10:50
回答 7查看 14.2K关注 0票数 14

我正在尝试用UIAutomation测试UIAlertView的存在,但我的处理程序从未被调用过。

在我的javascript的开头,我写道:

代码语言:javascript
复制
UIATarget.onAlert = function onAlert(alert) {
    UIALogger.logMessage("alertShown");
    return false;
}

据我所知,只要我指定了我的onAlert函数,在我的测试过程中出现alertView时就应该调用它。所以我运行了一个显示alertView的测试,下面是显示警报的代码:

代码语言:javascript
复制
UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:message message:nil delegate:self cancelButtonTitle:nil otherButtonTitles:@"OK", nil];
alertView.accessibilityLabel = @"alerte d'avertissement";
[alertView show];

我在仪器中运行我的测试,出现警报,但我的处理程序从未被调用。有没有人能够在UIAutomation中使用事件处理程序?

谢谢,文森特。

EN

回答 7

Stack Overflow用户

回答已采纳

发布于 2010-12-24 02:48:04

文档似乎是错的。事实证明,警报是在您的脚本试图运行的同一线程上处理的。因此,如果您希望调用警报处理程序,则需要休眠,例如,

代码语言:javascript
复制
UIATarget.onAlert = { ... }
window.buttons().triggerAlertButton.tap();
UIATarget.localTarget().delay(4);

此外,警报的名称和值似乎始终设置为null。然而,我能够访问包含警报标题的第一个静态文本。

票数 19
EN

Stack Overflow用户

发布于 2012-10-04 20:04:39

确保在显示UIAlertView时UI自动化脚本仍在运行。

例如,将以下行添加到脚本的末尾将使脚本保持运行,直到可以访问警报或对象解析的宽限期到期。

代码语言:javascript
复制
// Wait for UIAlert to appear so that UIATarget.onAlert gets called.
target.frontMostApp().alert();

我通过彻底阅读和理解Instruments User Guide: Automating UI Testing来弄明白这一点,我强烈建议将其作为UI自动化的入门。

回顾UIATarget Class Reference,特别是popTimeoutpushTimeoutsetTimeouttimeoutdelay方法也可能很有帮助。

票数 6
EN

Stack Overflow用户

发布于 2012-09-11 20:01:08

下面的代码适用于我。该函数正在处理警报,并在日志上打印"alert Shown“。

代码语言:javascript
复制
var target = UIATarget.localTarget();
var application = target.frontMostApp();
var window = application.mainWindow();

UIATarget.onAlert = function onAlert(alert){
    UIALogger.logMessage("alert Shown");    
}

target.frontMostApp().mainWindow().tableViews()[0]
    .cells()["Fhgui"].buttons()["Images"].tap();
// Alert detected. Expressions for handling alerts 
// should be moved into the UIATarget.onAlert function definition.
target.frontMostApp().alert().defaultButton().tap();
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3651316

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档