我的量角器测试失败并出现以下错误
错误:超时 - 在 jasmine.DEFAULT_TIMEOUT_INTERVAL 指定的超时内未调用异步回调。
这是我的规范文件。
let common=require('./Objects/common.js') 描述('云测试',函数(){
it('Cloudtest1', function() {
let EC=protractor.ExpectedConditions;
browser.waitForAngularEnabled(false);
browser.get(common.loginURL);
common.txtUserName.sendKeys('aqaasdas@hkm.com');
common.txtPword.sendKeys('asdasd@#$');
common.btnLogin.click();
browser.wait(EC.visibilityOf(element(by.xpath("//a[@class='btn btn-success']"))));
element(by.xpath("//a[@class='btn btn-success']")).click();
common.btnCrtPcr.click();
});
});
感谢任何帮助,我尝试回答此处发布的类似问题,但对我没有任何帮助。我正在运行最新的 Protractor 和 Chrome 版本。
答案 0 :(得分:0)
您是否尝试过异步测试?有时甚至后端响应或浏览器性能也会影响测试用例。
参考:https://jasmine.github.io/2.0/introduction.html#section-Asynchronous_Support
describe("Your module", function() {
var originalTimeout;
beforeEach(function() {
originalTimeout = jasmine.DEFAULT_TIMEOUT_INTERVAL;
jasmine.DEFAULT_TIMEOUT_INTERVAL = 10000;
});
it("takes a long time", function(done) {
let EC=protractor.ExpectedConditions;
browser.waitForAngularEnabled(false);
browser.get(common.loginURL);
common.txtUserName.sendKeys('aqaasdas@hkm.com');
common.txtPword.sendKeys('asdasd@#$');
common.btnLogin.click();
browser.wait(EC.visibilityOf(element(by.xpath("//a[@class='btn btn-success']"))));
element(by.xpath("//a[@class='btn btn-success']")).click();
common.btnCrtPcr.click();
});
afterEach(function() {
jasmine.DEFAULT_TIMEOUT_INTERVAL = originalTimeout;
});
});
答案 1 :(得分:0)
您的回调晚于 Jasmins 默认超时时间。即使您使用了预期条件,您也可能希望在 it 块中使用 async/await。
it('Cloudtest1', async () => {
let EC=protractor.ExpectedConditions;
browser.waitForAngularEnabled(false);
browser.get(common.loginURL);
await common.txtUserName.sendKeys('aqaasdas@hkm.com');
await common.txtPword.sendKeys('asdasd@#$');
await common.btnLogin.click();
browser.wait(EC.visibilityOf(element(by.xpath("//a[@class='btn btn-success']"))));
element(by.xpath("//a[@class='btn btn-success']")).click();
await common.btnCrtPcr.click();
});
建议:在页面对象中或在每个/全部之前执行操作。将它块用于expect 语句。 例子:
describe('When user logged Into account ', () => {
beforeAll(async () => {
await browser.waitForAngularEnabled(false);
await loginPO.login();
});
it('Browser title should be displayed.', async () => {
expect(await browser.getTitle()).toBe('test');
});
});