2

UI オートメーションを使用して、アプリのテスト ケースを開発しています。テストする必要がある操作の 1 つは、テーブルを「編集」モードにしてから、テーブル内のセルの順序を変更することです。

ビューに移動して、navigationBar に配置した「編集」ボタンをタップできます。

ただし、画面上で適切にドラッグする方法がわかりません。

テーブル ビュー (app.mainWindow().tables()[0]) である UIElement を見つけ、次のようにドラッグを実行しました。

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

ただし、テーブルはセルのハンドルをタッチ アンド ホールドしてからドラッグする必要があります。そのようなアクションを実行する方法がわかりません。

誰でもこれを行う方法を理解していますか?

4

1 に答える 1

1

「ドラッグアンドドロップ」でもほぼ同じ問題がありました。まず、テーブルではなくセルをドラッグしてみる必要があります。2点目はタイムアウトです。いつものように、アプリケーションにはドラッグ (タッチ アンド ホールド) に反応するためのタイムアウトがあります。この操作には 1 ~ 2 秒ほどかかります。dragFromToForDuration のタイムアウト パラメータを増やしてみてください。私のアプリケーションでは、6 ~ 8 秒に設定するだけで十分でした。

2 つのパラメーターを取る独自の関数を実装してみてください。最初のパラメーター - ドラッグするセル オブジェクト。2 番目のパラメーター - セルをドラッグした別のセル オブジェクトがドロップされます。この関数は、 FROMオブジェクトとTOオブジェクトの両方が画面に表示されている場合にのみ機能することに注意してください。

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 つあるとします。2 番目のものをドラッグして最後に配置する必要があります。関数呼び出しの例:

var cellToReorder = tableView()[<your table view>].cells()[<cell#2NameOrIndex>];
var cellToDrop = tableView()[<your table view>].cells()[<cell#5NameOrIndex>];
reorderCellsInTable(cellToReorder, cellToDrop);
于 2012-07-09T11:37:27.170 に答える