グリッドに指定されたすべてのヘッダーが含まれているかどうかを確認する必要がありますが、同時にヘッダーがすべてDOM内に表示されないため、 javascriptの非同期性のために実際に動作させる方法を知っています。DOMにレンダリングされていないグリッドヘッダーを繰り返します。
私はこれを試しましたが、これは良いアプローチだとは思いません。
var self = this;
this.checkGridHeaders = function(gridName, expectedHeaders) {
var previous;
var headers = this.poGridUtil.getGrid(gridName).element(by.css('.ui-grid-render-container-body'))
.element(by.css('.ui-grid-header')).all(by.repeater('col in colContainer.renderedColumns track by col.uid'));
headers.each(function(header, headerIndex) {
if(expectedHeaders.length != 0 && header != 'undefined') {
header.getText().then(function(headerText){
if(headerText == '') {
browser.executeScript("arguments[0].scrollIntoView();", previous).then(function() {
self.checkGridHeaders(expectedHeaders);
});
}
previous = header;
console.log('***Element: ' + headerText);
expect(expectedHeaders.indexOf(headerText)).not.toEqual(-1);
header = 'undefined';
});
}
});
};
と呼び、次のようになりますcheckGridHeaders('grid-className', ['header1', 'header2', 'header3', 'header4']);
基本的に私はexpectedHeader
は、既知のヘッダーを最後し、再度チェックするためにスクロール見えそうでない場合であるかどうかを確認したいです。私はちょうどそれを正しく書く方法を知らない。
それはスロー: 'defer.promiseは'期待(defer.promise())でfunction'ではありません.toContain(expectedHeaders); '。また、 'expect(defer.promise())。toContain(expectedHeaders)'の間に大量の括弧を使用しました。 – FCin
私は以前のエラーを修正しましたが、今度は各列を非常に高速にスクロールし、 'A Jasmine spec timed out。 WebDriverコントロールフローのリセット。 – FCin
これは、最初に発見された列の数で反復を開始します。これはまさに私の問題です。最初は列の数がわからないからですDOMでは表示されません。たとえば、実際の数値が13であっても、例えば 'headers.length'は10です...私はそれがスクロールするたびに新しい列があるかどうかを調べる何かが必要です。 – FCin