5

我试图了解如何使用 UIAutomation 来执行自动应用程序测试,因此我创建了一个可以从 JavaScript 界面驱动的温度转换器应用程序。这是用户界面:

在此处输入图像描述

顶部文本字段具有“Celsius”的可访问性标签,类似地,底部字段具有“Fahrenheit”作为其可访问性标签。我试图通过这个脚本来驱动它:

UIALogger.logStart("Test -40ºC == -40ºF");
var window = UIATarget.localTarget().frontMostApp().mainWindow();
var celsiusField = window.textFields()["Celsius"];
var fahrenheitField = window.textFields()["Fahrenheit"];
var convertButton = window.buttons()["Convert"];

celsiusField.setValue("-40");
convertButton.tap();
var fahrenheitValue = fahrenheitField.value();
if (fahrenheitValue == "-40.0") {
    UIALogger.logPass("-40C == -40F");
} else {
    UIALogger.logFail("-40C == " + fahrenheitValue + "F");
}

这会正确地将摄氏度字段中的文本设置为“-40”,当点击按钮时,应用程序会将华氏字段中的文本更新为“-40.0”。但是,fahrenheitValue具有“华氏度”值(文本字段的名称/标签),因此测试失败。我想知道这是否可能是时间问题,所以在点击后延迟一秒钟,这并没有改变行为。

是否可以从文本字段中获取文本并将其与预期值进行比较?

4

3 回答 3

5

是因为它是可访问性标签还是因为它是占位符文本而获得“华氏度”?

看起来 value() 可能会返回占位符文本。一种解决方法可能是在用户开始输入后修改占位符值以将其设置为用户输入的文本,然后在删除时将其恢复为华氏温度?我假设即使您调用 setValue ,它也会像调用 UITextField 委托方法时一样?

于 2011-11-25T11:17:10.800 回答
0

您可以在视图中添加标签,对其进行更新并读出。

于 2011-11-25T11:07:30.257 回答
0

尝试连接Accessibility Inspector以显示 UIAutomation 在您的应用程序中“看到”的内容。由于您在应用程序中设置值的方式,它可能正在读取一些过时的值。

刷新值的一种方法是发送更新事件:

UIAccessibilityPostNotification(UIAccessibilityLayoutChangedNotification, nil);
于 2011-11-25T11:30:01.493 回答