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