量角器中的元素加载问题

时间:2015-10-28 20:50:22

标签: javascript angularjs protractor

此刻,我和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');
    });

无论如何,这可以修复,以便在触发下一个动作之前保证元素加载?

2 个答案:

答案 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