つれづれなるままに。

webテストの自動化について備忘録のつもりで書いています

SeleniumIDE の UI-Element その3 UI-Argument

前回は UI-MAP についてでした。
これを使うメリットは何と言っても、テストケースからテスト対象ページ内の要素の定義を分離できるところです。
これは、同一ページに対し複数のテストケースを適用する場合
そのテストケースの保守コストを下げることができる
別ファイルにしておくことでページ定義とテストケース設計を平行にできる
などのメリットがあります。

逆にページ内の要素が少ない場合などでは、別ファイルで定義する手間が無駄になります。

が、画面内の要素が少なくても、これを導入するメリットがある機能がありそうなのです。

リファレンスについているサンプルがこれです。

map.addElement('searchPages', {
    name: 'result'
    , description: 'link to a result page'
    , args: [
        {
            name: 'index'
            , description: 'the index of the search result'
            , defaultValues: range(1, 21)
        }
        , {
            name: 'type'
            , description: 'the type of result page'
            , defaultValues: [ 'summary', 'detail' ]
        }
    ]
    , getLocator: function(args) {
        var index = args['index'];
        var type = args['type'];
        return "//div[@class='result'][" + index + "]"
            + "/descendant::a[@class='" + type + "']";
    }
});

ポイントは args と getLocator ですね。
要素を静的にxPathで定義するのではなく 関数を定義することにより getLocatorメソッドを定義しています。
これに引数として args を定義しています。

が、これ、どういう風に適用されるのかまではたどり着いてないんですよね。
まだまだ先が長い・・・・