2017-07-18 8 views
0

プログラム実行中に "ページオブジェクト"の "要素"セクションの要素を変更することはできますか?私は実行中にオブジェクトを作成し、オブジェクト名が存在するかどうかをチェックする必要があります。nightwatch - ページオブジェクト要素を変更する

私はhereから例を追っ:

オブジェクトのページ:

module.exports = { 
    url: function() { 
     return 'https://' + this.api.globals.host + '/#/products/'; 
    }, 
    elements: { 
     product: ".product[data-product-name='%s']" 
    }, 
    comands: [{ 
     el: function(elementName, data) { 
      var element = this.elements[elementName.slice(1)]; 
      return util.format(element.selector, data); 
     } 
    }] 
}; 

テストプログラム:

'my test': function (browser) { 
    var page = browser.page.myPage(); 
    page.click(page.el('@product', 'milk')); // .product[data-product-name='milk'] 
} 

をそれはこれまでのところ、正常に動作します。セレクタ文字列を返しますが、この文字列は正しいですが。

1)試験は、したがって、私はXPathセレクタを使用し、文字列の名前を検索しているが、バック「CSSセレクタ」にNightwatchスイッチ:しかし、私は2つの問題が発生しました。 NightwatchをXPathモードに保つ方法はありますか?

enter image description here

2)「VARページ」の目的は、上記指定された「要素」セクションから「要素」でなければならない文字列として引数を渡すことができないページオブジェクトパターンを使用しているが私のページのオブジェクトファイルで。この例は「CSSセレクタ」なので動作しますか?

ありがとうございます!

答えて

0

デフォルトではページオブジェクト内のCSSを使用しているので、xpathを指定する要素にはselectorlocateStrategyフィールドを追加する必要があります。

elements: { 
    product:{ 
     locateStrategy :'xpath', 
     selector : "//product[@data-product-name='%s']" 
    } 
} 

また、ページオブジェクト内でクリックする機能も必要です。

関連する問題