protractor - e2e Protractor 测试应该有多深?

标签 protractor angularjs-e2e

我正在为登录页面编写 e2e 测试,我意识到我不知道我的测试应该有多深。我澄清一下:一个主要测试必须是真实登录,显然,另一个测试将是虚假登录。另一个测试可以检查登录页面上的现有链接是否有效。但是,我应该测试显示所有页面的元素吗?例如:编写一个测试来检查一个 div 和其中的元素是否显示:

it('It should be displayed a Elke Winter div', function(){

    var elkeDiv = angularPage.elkeDiv;
    expect(elkeDiv.isDisplayed()).toBe(true);

    var title = angularPage.titleElke;
    var img = angularPage.imgElke;
    var content = angularPage.contentElke;
    var telephoneDt = angularPage.telDt;
    var telephoneDd = angularPage.telDd;
    var faxDt = angularPage.faxDt;
    var faxDd = angularPage.faxDd;

    expect(title.isDisplayed()).toBe(true);
    expect(img.isDisplayed()).toBe(true);
    expect(content.isDisplayed()).toBe(true);
    expect(telephoneDt.isDisplayed()).toBe(true);
    expect(telephoneDd.isDisplayed()).toBe(true);
    expect(faxDt.isDisplayed()).toBe(true);
    expect(faxDd.isDisplayed()).toBe(true);
});

你怎么看? 谢谢

最佳答案

我只测试对用户体验至关重要的页面内容,例如

  • 按钮
  • 指示正在发生的事情的短信
  • 链接
  • 输入
  • 菜单

永远不要测试 html 特定的东西,比如 div,而是总是使用语义选择器,比如 html id 或类,或者通过内容找到它们,例如

  • by.cssContainingText('#linkOne', '点击此处')
  • by.buttonText('发送邮件')

如果你找到一个你想要定位的 div 元素但没有 html id 也没有 html class 然后尽可能自己添加它,我使用前缀 e2e-e2e-linkOne 让开发人员知道选择器是为了测试而识别的。然后,您定位元素 $('.e2e-linkOne') 而不是标记名和/或位置 $$('div').get(2).

关于protractor - e2e Protractor 测试应该有多深?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25482404/

相关文章:

testing - locator by.repeater 找到了不止一个元素

docker - 如何确保 docker 仅用于我的任务

javascript - 如何使用 Protractor 测试是否加载了正确的图像?

angularjs - Protractor 在中继器内查找元素

selenium-webdriver - 单击 Protractor 中的上传按钮后如何关闭文件上传对话框

javascript - Firefox 中的 E2E Protractor 测试显示有 8 个待定规范这是什么意思?

jasmine - protractor-html-screenshot-reporter 测试执行后不显示任何报告

angularjs - 如何使用 Protractor 从无限滚动的 ng-grid 中的所有行和列中获取文本?

javascript - Protractor E2E 和 Angular

javascript - Karma E2E 测试已找到,但已跳过并标记为失败