Protractor中每个it语句均触发页面重载并打印.,求解决方案
解决Protractor中每个
it块重新加载页面及控制台打印点的问题 嘿,我刚入门Protractor的时候也踩过一模一样的坑!让我帮你拆解问题并给出修复方案:
为什么每个it都会重新加载页面?
你代码里的beforeEach函数是每个it测试用例执行前都会运行一次的,所以每次进入新的it,都会重新调用browser.get('https://login/'),把页面重置到登录页,之前的登录状态自然就丢失了。这是Jasmine测试框架的默认设计——beforeEach本来就是为每个测试用例准备干净的环境,但显然不符合你“登录后连续执行操作”的需求。
修复页面重复加载的方案
方案1:用beforeAll做一次性登录
beforeAll会在整个describe块的所有测试用例执行前只运行一次,后续的it都能在已登录的状态下执行:
describe('Smoke', function() { // 整个测试块启动前只完成一次登录 beforeAll(async function () { await browser.get('https://login/'); // 用await等待登录异步操作完成(根据你的login.login实现调整) await login.login(username); }); it('should display correct post-login title', async function() { const pageTitle = await browser.getTitle(); expect(pageTitle).toEqual('Your Post-Login Title'); }); it('should search for a user successfully', async function () { // 执行搜索操作,同样用await等待完成 await searchUser.performSearch('target-user'); // 添加搜索结果的断言 const searchResult = await element(by.css('.user-result')).getText(); expect(searchResult).toContain('target-user'); }); });
方案2:把关联操作合并到同一个it里
如果你的测试逻辑是强关联的(必须先登录才能搜索),也可以把这些步骤放到同一个it中,避免状态被重置:
describe('Smoke', function() { it('should login and search for a user successfully', async function() { // 1. 打开登录页 await browser.get('https://login/'); // 2. 完成登录 await login.login(username); // 3. 验证登录后的页面标题 const pageTitle = await browser.getTitle(); expect(pageTitle).toEqual('Your Post-Login Title'); // 4. 执行用户搜索 await searchUser.performSearch('target-user'); // 5. 验证搜索结果 const searchResult = await element(by.css('.user-result')).getText(); expect(searchResult).toContain('target-user'); }); });
关于控制台打印的"."
这个是Jasmine默认的测试进度输出,每个点代表一个执行通过的测试用例,属于正常现象。如果想要更清晰的测试日志,可以修改Protractor配置,添加jasmine-spec-reporter:
- 先安装依赖:
npm install jasmine-spec-reporter --save-dev - 在
protractor.conf.js中配置:
exports.config = { // 其他配置项... onPrepare: function() { const SpecReporter = require('jasmine-spec-reporter').SpecReporter; jasmine.getEnv().addReporter(new SpecReporter({ spec: { displayStacktrace: true, displayDuration: true } })); } };
这样控制台会输出带详细步骤和时长的测试结果,替代默认的点。
内容的提问来源于stack exchange,提问作者Vin
相关产品推荐
相关产品推荐

