此刻,我和Protractor相形见绌。
有时候我的元素会及时加载,以便下一个动作发生在它们上面,有时它们却没有。我猜测它与它的异步性有关。
无论如何,例如,有时这段代码会通过,有时它不会:
it('should create an audience using an existing audience and should be able to filter and search for that audience', function () {
page.audienceTab.click();
$('.panel-list .row .panel-list-header .btn').click();
$('.panel-list div .btn').click();
$('.edit-audience .row .col-md-3 accordion .panel-group .name-filter .panel-collapse .panel-body section input').sendKeys('test-audience');
$('.expose-offset button').click();
$('.col-xs-4 input').sendKeys('test-audience');
expect($('.panel-list .panel h3').getText()).toEqual('test-audience');
});
无论如何,这可以修复,以便在触发下一个动作之前保证元素加载?
答案 0 :(得分:1)
您可以尝试明确解决click
承诺:
page.audienceTab.click().then(function () {
$('.panel-list .row .panel-list-header .btn').click();
$('.panel-list div .btn').click();
$('.edit-audience .row .col-md-3 accordion .panel-group .name-filter .panel-collapse .panel-body section input').sendKeys('test-audience');
$('.expose-offset button').click();
$('.col-xs-4 input').sendKeys('test-audience');
expect($('.panel-list .panel h3').getText()).toEqual('test-audience');
});
或者,在点击之前等待元素出现:
var EC = protractor.ExpectedConditions,
button = $('.panel-list .row .panel-list-header .btn');
browser.wait(EC.presenceOf(button), 5000);
button.click();
// rest of the test
答案 1 :(得分:0)
有时,当你将最终期望包装在.then()函数中时会有所帮助,例如:
right -= 1