0

我想知道一个按钮是否在主窗口 UI 上呈现。此按钮呈现取决于服务器响应结果(用 Objective C 编写)。如果服务器响应完美,它将完美呈现(可见),否则它不存在(不可见)。每当它变得可见时,我总是点击它以进行进一步的下一个过程。

我写了代码

UIATarget.localTarget().pushTimeout(200);
   //My code
UIATarget.localTarget().popTimeout();

通过上面的代码,我必须等到 200 秒,但我担心的是我想等待,但每当对象出现在屏幕上时,我不想让我在等待模式下忙碌。

我将如何在自动化中编写代码?

谢谢

4

2 回答 2

0

好的,这可能会让您知道如何跟进:

为您的视图实现一个accessibilityValue方法,该方法返回一个JSON格式的值:

- (NSString *)accessibilityValue
{
    return [NSString stringWithFormat:
            @"{'MyButtonisVisible':%@}", 
            self.MyButton.isHidden ? @"false" : @"true"];
}

然后以某种方式你可以从你的测试 javascript 中访问它:

var thisproperty = eval("(" + element.value() + ")");

if (thisproperty.MyButtonisVisible) {
    UIATarget.localTarget().tap({"x":100, "y":100});
}

希望有帮助。

于 2013-05-02T21:26:09.420 回答
0

如果您在启用按钮时使名称不同,则可以执行以下操作:

var awesomeButton = target.frontMostApp().mainWindow().buttons()[0];
UIATarget.localTarget().pushTimeout(200);
awesomeButton.withName("My Awesome Button");
if (awesomeButton.isVisible()) {
    UIALogger.logError("Error no awesome button!");
}
UIATarget.localTarget().popTimeout();        

withName 将重复测试名称,一旦名称匹配或达到超时,控件将返回到您的脚本。

根据 Apple 的文档

withName:测试元素的 name 属性是否具有给定的字符串值。如果匹配失败,则重试测试,直到当前超时到期。

Timeout Periods:如果操作在超时期间完成,则该行代码返回,您的脚本可以继续。如果操作在超时期间未完成,则会引发异常。

https://developer.apple.com/library/etc/redirect/xcode/ios/e808aa/documentation/DeveloperTools/Conceptual/InstrumentsUserGuide/UsingtheAutomationInstrument/UsingtheAutomationInstrument.html#//apple_ref/doc/uid/TP40004652-CH20

于 2013-05-04T01:04:12.543 回答