哪种方法可以控制量角器测试的执行顺序?
问题案例1:量角器快速滑动角度页面以至于无法操纵(填充)输入数据。 (滑动逻辑是从不可见转换为可见并通过将它们转换为窗口可见区域)。因此量角器无法看到超出窗口的那些并且具有不透明度0.要测试我只能填写第一页。其他人刷得太快(或异步)。
问题案例2:在我填写第一页并提交表格后,数据被保存并且警报显示确认消息。然后量角器必须单击下拉列表,浏览器应导航到显示已保存数据的页面。问题是,由于稍后发出警报,量角器会在保存数据之前单击下拉列表(必须等待警报)。
问题是:有没有办法控制量角器中给定顺序执行的测试?有没有办法按住滑动来填写日期(否则量角器不会看到它)?这是简化的代码:
it('should fill in form and send data', function() {
// fill in textarea field
element.all(by.css('textarea')).first().clear().sendKeys('test');
// goes to page 2
browser.executeScript("angular.element(document.documentElement)
.injector().get('$rootScope').$broadcast('nextPage', {direction: 'next'});");
// Here is Problem 1. Though i can see this page when testing,
// the input is not visible for protractor.
// fill in input-field
element.all(by.css('input')).first().clear().sendKeys('test');
// goes to page 1
browser.executeScript("angular.element(document.documentElement)
.injector().get('$rootScope').$broadcast('prevPage', {direction: 'prev'});");
// submit form
element(by.css('button[type=submit]')).click();
// Here is problem 2. The following test is executed earlier
// than the following alert.
//browser.wait(protractor.ExpectedConditions.alertIsPresent(), 3000);
var alertDialog = browser.switchTo().alert();
expect(alertDialog.getText()).toEqual('Saved');
alertDialog.accept();
});
it('should click drop-down-list', function() {
// click drop-down list
element(by.css('.drop-down-list')).click();
});
答案 0 :(得分:0)
我个人认为browser.sleep(5000)应解决第二个问题。
如果没有,你可以尝试使用promisies
element(by.css('button[type=submit]')).click().then(function(){
var alertDialog = browser.switchTo().alert();
expect(alertDialog.getText()).toEqual('Saved');
alertDialog.accept();
});
这应该等待承诺得到解决(即点击提交按钮),然后执行里面的代码片段