Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/375.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript UI自动化警报提示按钮/文本字段可访问性_Javascript_Iphone_Ios_Uialertview_Ios Ui Automation - Fatal编程技术网

Javascript UI自动化警报提示按钮/文本字段可访问性

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

说到alertView,我在UI自动化(iOS内置工具)方面遇到了一些问题。首先,我不确定在哪里可以为alertView上的按钮设置accessibilityLabel等。第二,虽然我没有收到错误,但我无法让我的textField实际将textField的值设置为某个值。我将为alertView和用于UI自动化的javaScript编写代码

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"];
}