我想知道按钮是否在主窗口UI上呈现。此按钮呈现取决于服务器响应结果(以Objective C编写)。如果服务器响应完美,它将完全呈现(可见),否则它不存在(不可见)。每当它变得可见时,我总是点击它以进行下一步。
我写了代码
UIATarget.localTarget().pushTimeout(200);
//My code
UIATarget.localTarget().popTimeout();
通过上面的代码,我必须等到200秒,但我担心的是我想等待,但无论何时屏幕上的对象,我都不想让我忙于等待模式。
我如何在自动化中编写代码?
由于
答案 0 :(得分: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});
}
希望有所帮助。
答案 1 :(得分: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属性是否具有给定的字符串值。如果匹配失败,则重试测试,直到当前超时到期。
超时期限: 如果操作在超时期间完成,则返回该行代码,您的脚本可以继续。如果在超时期间未完成操作,则会引发异常。