Javascript UI自动化警报提示按钮/文本字段可访问性
说到alertView,我在UI自动化(iOS内置工具)方面遇到了一些问题。首先,我不确定在哪里可以为alertView上的按钮设置accessibilityLabel等。第二,虽然我没有收到错误,但我无法让我的textField实际将textField的值设置为某个值。我将为alertView和用于UI自动化的javaScript编写代码Javascript UI自动化警报提示按钮/文本字段可访问性,javascript,iphone,ios,uialertview,ios-ui-automation,Javascript,Iphone,Ios,Uialertview,Ios Ui Automation,说到alertView,我在UI自动化(iOS内置工具)方面遇到了一些问题。首先,我不确定在哪里可以为alertView上的按钮设置accessibilityLabel等。第二,虽然我没有收到错误,但我无法让我的textField实际将textField的值设置为某个值。我将为alertView和用于UI自动化的javaScript编写代码 UIATarget.onAlert = function onAlert(alert) { // Log alerts and bail, unle
UIATarget.onAlert = function onAlert(alert)
{
// Log alerts and bail, unless it's the one we want
var title = alert.name();
UIALogger.logMessage("Alert with title '" + title + "' encountered!");
alert.logElementTree();
if (title == "AlertPrompt")
{
UIALogger.logMessage(alert.textFields().length + '');
target.delay(1);
alert.textFields()["AlertText"].setValue("AutoTest");
target.delay(1);
return true; // Override default handler
}
else
return false;
}
var target = UIATarget.localTarget();
var application = target.frontMostApp();
var mainWindow = application.mainWindow();
mainWindow.logElementTree();
//target.delay(1);
//mainWindow.logElementTree();
//target.delay(1);
var tableView = mainWindow.tableViews()[0];
var button = tableView.buttons();
//UIALogger.logMessage("Num buttons: " + button.length);
//UIALogger.logMessage("num Table views: " + mainWindow.tableViews().length);
//UIALogger.logMessage("Number of cells: " + tableView.cells().length);
/*for (var currentCellIndex = 0; currentCellIndex < tableView.cells().length; currentCellIndex++)
{
var currentCell = tableView.cells()[currentCellIndex];
UIALogger.logStart("Testing table option: " + currentCell.name());
tableView.scrollToElementWithName(currentCell.name());
target.delay(1);
currentCell.tap();// Go down a level
target.delay(1);
UIATarget.localTarget().captureScreenWithName(currentCell.name());
//mainWindow.navigationBar().leftButton().tap(); // Go back
target.delay(1);
UIALogger.logPass("Testing table option " + currentCell.name());
}*/
UIALogger.logStart("Testing add item");
target.delay(1);
mainWindow.navigationBar().buttons()["addButton"].tap();
target.delay(1);
if(tableView.cells().length == 5)
UIALogger.logPass("Successfully added item to table");
else
UIALogger.logFail("FAIL: didn't add item to table");
谢谢你的帮助 如果您想为视图分配可访问性名称,最可能的情况是您应该尝试为整个视图实现可访问性方法(我不确定您在标题中为AlertPrompt类子类化了什么) 尝试为AlertPrompt实现添加以下方法:
- (BOOL)isAccessibilityElement {
return YES;
}
- (NSString *)accessibilityLabel { // will translate to accessibility .name() in UI javascript
return [NSString stringWithString:@"AlertPrompt"];
}
- (NSString *)accessibilityValue { // will translate to accessibility .value() in UI javascript
return [NSString stringWithString:@"AlertString"];
}
然后记录元素树,确保可以通过UI javascript中的.name()和.value()方法访问视图/警报可访问性属性 谢谢你的帮助,我会试试这个,当我可以测试这个的时候会给你结果!好的,这确实对名称起作用(以前的实现也起作用,但看起来更干净)。但是,我似乎无法使.defaultButton()正常工作(我认为defaultButton()是警报的可调用项),并且我的文本字段似乎没有显示在logElementTree中。还有什么其他的错误吗?顺便说一句,感谢您更干净地实施无障碍标签等!在元素树中看不到textField的一个原因是,您正在将可访问性标签设置为self.textField,而不是实际添加到视图中的textField。在将文本字段添加到视图之前,请尝试设置其可访问性。
- (BOOL)isAccessibilityElement {
return YES;
}
- (NSString *)accessibilityLabel { // will translate to accessibility .name() in UI javascript
return [NSString stringWithString:@"AlertPrompt"];
}
- (NSString *)accessibilityValue { // will translate to accessibility .value() in UI javascript
return [NSString stringWithString:@"AlertString"];
}