Ошибка scrollToVisible при тестировании на устройстве, UIAutomation

Для этой строки тестового кода: view.scrollViews()[0].tapWithOptions({tapOffset:{x:0.32, y:0.25}})

я получаю эту ошибку

2012-11-02 18:09:23 +0000 None: Script threw an uncaught JavaScript error: target.frontMostApp().mainWindow().scrollViews()[0] could not be tapped on line 244 of feature.js
2012-11-02 18:09:23 +0000 Debug: target.frontMostApp().mainWindow().scrollViews()[0].tapWithOptions({tapOffset:{x:"0.32", y:"0.25"}})
2012-11-02 18:09:23 +0000 Debug: target.frontMostApp().mainWindow().scrollViews()[0].scrollToVisible()
2012-11-02 18:09:23 +0000 Debug: target.frontMostApp().mainWindow().scrollViews()[0] - scrollToVisible cannot be used on the element because it does not have a scrollable ancestor.
2012-11-02 18:09:23 +0000 Debug: target.frontMostApp().mainWindow().scrollViews()[0] - scrollToVisible cannot be used on the element because it does not have a scrollable ancestor.
2012-11-02 18:09:23 +0000 Debug: target.frontMostApp().mainWindow().scrollViews()[0] could not be tapped

Дерево логэлементов выглядит так

UIATarget "MyiPadname" {{0, 0}, {1024, 768}}
elements: {
UIAApplication "myAppName" {{0, 0}, {1024, 768}}
elements: {
    UIAWindow "(null)" {{0, 0}, {1024, 768}}
    elements: {
        UIAScrollView "(null)" {{0, 0}, {1024, 768}}
        elements: {
            UIAImage "(null)" {{1017, 761}, {7, 7}}
            UIAImage "(null)" {{1017, 761}, {7, 7}}
        }
        UIAImage "nav_bar.png" {{0, 724}, {1024, 44}}
        UIAButton "button featured" {{0, 730}, {134, 39}}
        UIAButton "See the world" {{134, 730}, {223, 39}}
        UIAButton "button my favorites" {{357, 730}, {180, 39}}
        UIAButton "button settings" {{967, 736}, {33, 27}}
    }
 }
}

Я использую XCode 4.5.1. Может ли кто-нибудь помочь мне исправить это. Спасибо


person codemau5    schedule 02.11.2012    source источник
comment
В инструментах есть гребаная ошибка, это сводит меня с ума   -  person Bgi    schedule 08.01.2013
comment
Извините, я не заметил, что вы пытаетесь нажать Scrollview, что странно   -  person Bgi    schedule 08.01.2013


Ответы (2)


Вы случайно не используете симулятор iOS 5.x или устройство iOS 5.x? Если да, то я вижу ту же проблему. Я считаю, что Xcode 4.5.1 не любит ScrollViews.

Но я нашел обходной путь.

Мой элемент выглядит так:

target.frontMostApp().mainWindow().scrollViews()[0].buttons()["Wikipedia"]

Итак, вместо прямого доступа к кнопке я пытаюсь получить доступ к staticText для кнопки.

target.frontMostApp().mainWindow().scrollViews()[0].buttons()["Wikipedia"].staticTexts()["Wikipedia"].tap();

Я надеюсь, что это работает для вас.

person Rahul Jawale    schedule 09.11.2012
comment
Это работает только потому, что у вас есть UIStaticText внутри кнопки. Я проголосовал, потому что общая идея обходного пути верна: похоже, проблема возникает только с кнопками. - person Bgi; 08.01.2013

Я получаю ту же ошибку при выполнении flickInsideWithOptions в представлении прокрутки. Я считаю, что структура автоматизации пытается прокрутить до элемента, который вы хотите нажать первым, но если прокрутка по какой-то причине отключена, она завершается ошибкой, о которой вы упомянули.

Есть только один способ исправить это — инфраструктура автоматизации не может знать, что мы нажимаем на прокрутку — мы должны избегать ее специальных версий функций касания/пролистывания/пролистывания. Вместо этого мы нажмем mainWindow, например.

var buttonRect = button.rect();
var windowRect = mainWindow.rect();

var xPos = (20 + buttonRect.origin.x) / windowRect.size.width;
var yPos  = (50 + buttonRect.origin.y) / windowRect.size.height;

mainWindow.tapWithOptions({tapOffset:{x:xPos, y:yPos}});
person Sulthan    schedule 10.01.2013