量角器异步调用问题

时间:2016-09-23 09:56:02

标签: javascript node.js protractor

我是量角器的新手。最初在构建我的代码时,我使用了多个,但后来我将所有内容都移到了一个中,现在我的代码看起来像这样:

'/var/www/www-root/data/www/mydomain.com'

但不知何故,当我运行我的代码时,我收到此错误,我不知道如何解决它。

var UI = require('./../ui.js');
var co = require('co');
var ui = new UI();

describe("MapFeedback: address-no longer exists", function() {
    ui.setSmallScreenSize();
    // ui.testLogger(100);
    it("test", co.wrap(function*() {
        yield browser.get(ui.createStartLink());
        yield ui.PLACE_PROBLEM.click();
        expect(browser.getCurrentUrl()).toContain("report_place");
        yield ui.REPORT_PLACE_INAPPROPRITATE.click();
        expect(browser.getCurrentUrl()).toContain("select_place_content/place_content");

        yield ui.zoomIn(18.5);
        //its clicking the way to early before the zoomIn is performed.

        var elmOK = element(By.css('button[ng-click="doneSelectObject(selectedObject)"]'));
        yield ui.waitFor(protractor.ExpectedConditions.elementToBeClickable(elmOK));
        yield elmOK.click();

        expect(browser.getCurrentUrl()).toContain("place_content");
        yield ui.RADIOBOX_OTHER.click();
        yield ui.TEXTBOX_PLACE_DETAILS.sendKeys('TEST');
        yield ui.SUBMIT.click();
        expect(browser.getCurrentUrl()).toContain("submit");
        yield ui.waitSubmit();
        expect(yield element(By.css('div[ng-show="mapFeedBack.submitState==\'success\'"]')).isDisplayed()).toBeTruthy();
    }));
});

如何确保后续代码仅在ui.zoomin()完成后运行。

1 个答案:

答案 0 :(得分:0)

在完成执行完成之前,Jasmine超时时会看到错误

增加量角器conf.js中的超时设置

 timeout: 50000,

或者,如果您只想为此规范执行超时更改

  this.timeout(50000);

为了确保代码的后半部分仅在UI.zoomin()完成后运行,它取决于UI.zoomin()是否返回promise / callback。如果是,则必须链接后续命令

如果UI.zoomin()包含webdriverJs命令,它们将自动放入webdriver控制流程中。