Как я могу проверить переупорядочение таблицы с помощью инструментов и автоматизации пользовательского интерфейса? - PullRequest
2 голосов
/ 30 июля 2011

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

Я могу перейти к представлению и нажать кнопку «Изменить», которую я вставил в панель навигации.

Однако я не могу понять, как правильно перетаскивать экран.

Я нашел UIElement, являющийся табличным представлением (app.mainWindow (). Tables () [0]), и выполнил перетаскивание с помощью:

table.dragInsideWithOptions({startOffset:{x:0.8, y:0.3}, endOffset:{x:0.8, y:0.8}, duration:1.5});

Однако стол должен коснуться и удерживать ручку ячейки, а затем перетащить. Я не вижу, как выполнить такое действие.

Кто-нибудь выяснит, как это сделать?

1 Ответ

1 голос
/ 09 июля 2012

У меня была почти такая же проблема с «Drag and Drop». Прежде всего вам нужно попытаться перетащить в него не таблицу, а ячейку. Второй момент - это тайм-аут. Как обычно, у приложения есть тайм-аут для реакции на перетаскивание (коснитесь и удерживайте). для этой операции может потребоваться 1 или 2 секунды Попробуйте увеличить параметр времени ожидания для dragFromToForDuration. Для моего приложения достаточно было установить 6 - 8 секунд.

Попробуйте реализовать собственную функцию, которая будет принимать 2 параметра. Первый параметр - объект ячейки, который вы хотите перетащить. Второй параметр - другой объект ячейки, куда вы перетащили ячейку, будет отброшен. Обратите внимание, что эта функция будет работать только , если оба объекта ОТ и ДО будут видны на экране.

function reorderCellsInTable(from, to)
{
    if ( from.checkIsValid() && to.checkIsValid() )
    {
        if ( !from.isVisible() )
        {
            from.scrollToVisible();
            //put 1 second delay if needed
        }
        var fromObjRect = from.rect();
        // setting drag point into the middle of the cell. You may need to change this point in order to drag an object from required point. 
        var sourceX = fromObjRect.origin.x + fromObjRect.size.width/2;
        var sourceY = fromObjRect.origin.y + fromObjRect.size.height/2;
        var toObjRect = to.rect();
        // setting drop point into the middle of the cell. The same as the drag point - you may meed to change the point to drop bellow or above the drop point
        var destinationX = toObjRect.origin.x + toObjRect.size.width/2;
        var destinationY = toObjRect.origin.y + toObjRect.size.height/2;

        UIATarget.localTarget().dragFromToForDuration({x:sourceX, y:sourceY}, {x:destinationX, y:destinationY}, 8);
        }
    }

Например, у вас есть 5 клеток. Вам нужно перетащить второй и поставить его в конце. Пример вызова функции:

var cellToReorder = tableView()[<your table view>].cells()[<cell#2NameOrIndex>];
var cellToDrop = tableView()[<your table view>].cells()[<cell#5NameOrIndex>];
reorderCellsInTable(cellToReorder, cellToDrop);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...