Angularjs 量角器E2E测试在11秒超时时停止工作

Angularjs 量角器E2E测试在11秒超时时停止工作,angularjs,protractor,angularjs-e2e,Angularjs,Protractor,Angularjs E2e,我使用量角器1.4来测试我们的角度网站。我有一套测试正在运行并完美通过,直到一周前,大多数测试突然在11秒超时时失败(“等待量角器在11001ms后与页面同步超时”) 因为我想回溯并找出某个地方是否有一段代码对此负责,所以我返回到一个提交,该提交是ok的,并且我标记为所有测试都通过了,nada-仍然是相同的问题 在这一点上,我不知道是什么原因和如何继续。似乎环境中的某些东西已经改变了(恢复并没有改变),但我不确定它会是什么。 我认为这可能与Chrome版本有关,所以我尝试了firefox——结果

我使用量角器1.4来测试我们的角度网站。我有一套测试正在运行并完美通过,直到一周前,大多数测试突然在11秒超时时失败(“等待量角器在11001ms后与页面同步超时”)

因为我想回溯并找出某个地方是否有一段代码对此负责,所以我返回到一个提交,该提交是ok的,并且我标记为所有测试都通过了,nada-仍然是相同的问题

在这一点上,我不知道是什么原因和如何继续。似乎环境中的某些东西已经改变了(恢复并没有改变),但我不确定它会是什么。 我认为这可能与Chrome版本有关,所以我尝试了firefox——结果相同

我将非常感谢给予的任何帮助

测试失败的示例:

 it('should succeed for new user and fail for registered one', function () {
    //check create account link
    var createAccountLink = element(by.id('createNewAccountLink'));
    expect(createAccountLink.getText()).toEqual("or Create account");
    createAccountLink.click();

    //check create account title
    expect(element(by.css('#createAccountTitle > span')).getText()).toEqual("Create account");

    //insert new phone
    element(by.model('phone.number')).sendKeys(e2eHelperMethods.testedPhoneNumber);
    element(by.id('sendPinCodeBtn')).click();

    //check the pin code message
    expect(element(by.css('#pincodeSentMsg > span')).getText()).toContain(e2eHelperMethods.testedPhoneNumber);
    element(by.buttonText('OK')).click();

    //check pin code input screen
    element(by.model('model.pinCode')).sendKeys(e2eHelperMethods.defaultPin);
    element(by.id('validatePinCodeBtn')).click();

    //enter new password for the user
    element(by.model('model.password')).sendKeys(e2eHelperMethods.defaultPassword);
    element(by.model('model.repeatPassword')).sendKeys(e2eHelperMethods.defaultPassword);
    element(by.id('updateNewPasswordBtn')).click();

    //verify we got to the home screen
    expect(browser.getCurrentUrl()).toEqual(e2eHelperMethods.defaultWebsiteUri + 'home');

    //now log out and try to create same user again and verify we are failing
    browser.get(""); <-------------Here it hangs and gives me the 

    createAccountLink.click();
    element(by.model('phone.number')).sendKeys(e2eHelperMethods.testedPhoneNumber);
    element(by.id('sendPinCodeBtn')).click();
    expect(element(by.css('#numberAlreadyRegisteredMsg > span')).getText()).toContain("Your number is already registered. Please enter the password to login.");
});
it('新用户应该成功,注册用户应该失败',函数(){
//选中“创建帐户链接”
var createAccountLink=element(by.id('createNewAccountLink');
expect(createAccountLink.getText()).toEqual(“或创建帐户”);
createAccountLink.click();
//选中“创建帐户标题”
expect(元素(by.css('#createAccountTitle>span')).getText()).toEqual(“创建帐户”);
//插入新电话
元素(按.model('phone.number')).sendKeys(e2eHelperMethods.testedPhoneNumber);
元素(by.id('sendPinCodeBtn'))。单击();
//检查pin码消息
expect(元素(by.css('#pincodeSentMsg>span')).getText()).toContain(e2eHelperMethods.testedPhoneNumber);
元素(by.buttonText('OK'))。单击();
//检查pin码输入屏幕
元素(by.model('model.pinCode')).sendKeys(e2eHelperMethods.defaultPin);
元素(by.id('validatePinCodeBtn'))。单击();
//为用户输入新密码
元素(by.model('model.password')).sendKeys(e2eHelperMethods.defaultPassword);
元素(by.model('model.repeatPassword')).sendKeys(e2eHelperMethods.defaultPassword);
元素(by.id('updateNewPasswordBtn'))。单击();
//确认我们进入了主屏幕
expect(browser.getCurrentUrl()).toEqual(e2eHelperMethods.defaultWebsiteUri+'home');
//现在注销并再次尝试创建同一用户,并验证我们是否失败

事实证明,我们在web应用程序启动时使用$timeout来监视用户的非活动状态。 在测试环境中禁用此功能解决了主要问题。
对于Intro.JS框架,我们似乎不得不使用browser.driver实例,因为出于某种原因,它会挂起并最终抛出11秒的异常。

您的页面是否包含任何可能需要太长时间的http请求?或者您是否在任何地方使用$timeout?为了帮助您,使用此p的jsfiddle将非常有用你也可以尝试修改量角器的超时,并给它一个更长的延迟,试试看,让我知道,如果把60秒,例如解决了问题getPageTimeout:60000(cetia提供了链接)