【发布时间】:2014-12-16 09:35:16
【问题描述】:
我正在使用 protractor 1.4 对我们的 Angular 网站进行 E2E 测试。我有一套测试运行并完美通过,直到一周前突然大多数测试开始在 11 秒超时时失败(“超时等待量角器在 11001 毫秒后与页面同步”)
因为我想回溯并查找某处是否有一段代码对此负责,所以我恢复到一个正常的提交,并且我标记为所有测试都通过并且 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.");
});
也许值得一提的是,在发生故障时,网站开始了 Into.JS 之旅 - 也许这就是问题所在?
【问题讨论】:
-
您的页面是否包含任何可能需要很长时间的 http 请求?还是您在任何地方都使用 $timeout ?为了帮助您,拥有此页面的 jsfiddle 或代码摘录会很有用。
-
你也可以尝试修改量角器的超时时间并给它更长的延迟,试试这个,让我知道如果放 60s 可以解决问题 getPageTimeout: 60000 (cetia 给出了链接)跨度>
标签: angularjs protractor angularjs-e2e