如何避免“错误:超时 - 在jasmine.DEFAULT_TIMEOUT_INTERVAL指定的超时内未调用异步回调。”

时间:2018-04-13 09:28:17

标签: google-chrome protractor

我已经看到了这个问题,但未能找到同样的工作解决方案。我是量角器的新手。请提供解决方案。 我正在使用protrator 5,chrome版本65,也使用量角器为React JS网站创建POC。

 var Jasmine2HtmlReporter = require('C:\\Program Files\\nodejs\\node_modules\\protractor-jasmine2-html-reporter');

exports.config={
    framework:'jasmine',
    seleniumAddress:'http://localhost:4444/wd/hub',
    specs:['../SpecFiles/*.js'],
    capablities:{
       'browserName':'chrome'
    },
    params:{
        common: {
            url: "XXXX",
            userName:"XXXXXX",
            password: "viktest12345",
            testData: require('../ElementLocators/elements.json')
        }
    },
    jasmineNodeOpts: {
        defaultTimeoutInterval: 500000000000000000000000
    },
    "globals": {
        "browser": false},
    onPrepare: function() {
        jasmine.getEnv().addReporter(
            new Jasmine2HtmlReporter({
                takeScreenshotsOnlyOnFailures: true,
                savePath: 'target/screenshots'
            })
        );

    }
}

test:


var waitForUrlToChangeTo = require('../globalMethods').x;

describe("Login Functionality",function()
{

    beforeEach(function() {
/*      originalTimeout = jasmine.DEFAULT_TIMEOUT_INTERVAL;
        jasmine.DEFAULT_TIMEOUT_INTERVAL = 10000000000;*/
        browser.ignoreSynchronization = true;
        browser.waitForAngularEnabled(false);
        browser.get(browser.params.common.url);
        browser.driver.manage().window().maximize();
    });

    it("login Functionality with valid credentials", function () {
        console.log("Login with valid credentials");
        element(by.name(browser.params.common.testData.login.login_userName)).getWebElement().sendKeys(browser.params.common.userName);
        browser.driver.findElement(by.name(browser.params.common.testData.login.login_password)).sendKeys(browser.params.common.password);
        browser.findElement(by.buttonText(browser.params.common.testData.login.login_submit)).click();
        waitForUrlToChangeTo(new RegExp(browser.params.common.testData.dashboard.url));
        var pageHeading = browser.driver.findElement(by.xpath(browser.params.common.testData.dashboard.page_Heading)).getText();
        expect(pageHeading).toBe("Dashboard");
        });
});

我在config.js中尝试了默认超时设置,也在每个块之前,也作为describe block.none解决方案的第三个参数。请帮助我。

1 个答案:

答案 0 :(得分:0)

根据量角器文档,量角器click / sendKeys返回

  

click / sendKeys命令完成后将解决的诺言。

您可以在此处尝试使用 async / await ! 例如:

it('demo test', async ()=>{
  await browser.findElement(by.buttonText(browser.params.common.testData.login.login_submit)).click();
 });

protrator documentation

中了解更多信息