私はNightwatchでグリッドのページ付けをテストするためのテストを書いています。私は、テストスイートのメンテナンスを容易にするために、ページオブジェクトと要素セレクタを使用しています。しかし、私はコマンド内で要素セレクタを使うことに限界があります。次のコードはエラーなしで実行されます。私は.getTextコマンドの要素のセレクターを使用していますNightwatchどのようにコマンド内で要素セレクタを表示させることができますか?
pagination() {
var lastPageNum;
var currentPageNum;
var newPageNum
return this
.getText('@pageNum1', function(result) {
currentPageNum = parseInt(result.value);
console.log('Current Page Number = ' + currentPageNum);
})
.getText('@pageNum2', function(result) {
lastPageNum = parseInt(result.value);
console.log('last Page Number = ' + lastPageNum);
if (lastPageNum >= 2) {
this.useXpath()
.waitForElementVisible('//*[@id="borderLayout_eRootPanel"]/div[2]/div/div/span[2]/button[3]', 3000)
.click('//*[@id="borderLayout_eRootPanel"]/div[2]/div/div/span[2]/button[3]')
.getText('//*[@id="borderLayout_eRootPanel"]/div[2]/div/div/span[2]/span[1]', function(result) {
newPageNum = parseInt(result.value);
console.log('New Page = ' + newPageNum);
this.assert.equal(newPageNum, currentPageNum + 1, "Assert pagination to Next page passed.");
})
} else {
console.log('Not enough rows exist in grid to test pagination, pages = ' + lastPageNum)
}
})
},
注意。ここで私が使用していセレクタは、次のとおりです。
pageNum1: {
selector: '//*[@id="borderLayout_eRootPanel"]/div[2]/div/div/span[2]/span[1]',
locateStrategy: 'xpath'
},
pageNum2: {
selector: '//*[@id="borderLayout_eRootPanel"]/div[2]/div/div/span[2]/span[2]',
locateStrategy: 'xpath'
},
これまでのところ、とても良いです。私が実行している問題は、.getTextコマンド内のxpath要素を要素セレクタで置き換えるときです。ここで私は上記を交換しようとしていたコードされています
pagination() {
var lastPageNum;
var currentPageNum;
var newPageNum
return this
.getText('@pageNum1', function(result) {
currentPageNum = parseInt(result.value);
console.log('Current Page Number = ' + currentPageNum);
})
.getText('@pageNum2', function(result) {
lastPageNum = parseInt(result.value);
console.log('last Page Number = ' + lastPageNum);
if (lastPageNum >= 2) {
this.useXpath()
.waitForElementVisible('@nextPageButton', 3000)
.click('@nextPageButton')
.getText('@pageNum1', function(result) {
newPageNum = parseInt(result.value);
console.log('New Page = ' + newPageNum);
this.assert.equal(newPageNum, currentPageNum + 1, "Assert pagination to Next page passed.");
})
} else {
console.log('Not enough rows exist in grid to test pagination, pages = ' + lastPageNum)
}
})
},
そして、ここでは、私が使用しています追加要素セレクターです:
nextPageButton: {
selector: '//*[@id="borderLayout_eRootPanel"]/div[2]/div/div/span[2]/button[3]',
locateStrategy: 'xpath'
},
.getTextコマンドのxpathを次のように置き換えてテストを実行しようとすると要素セレクタ、テストは次のエラーで失敗します。要素セレクタは.getTextコマンド関数内で表示されるように取得する方法は
Timed out while waiting for element <@NextPageButton> to be present for 3000 milliseconds. - expected "visible" but got: "not found"
ありますか?