【问题标题】:How do I test controller as syntax with protractor?如何使用量角器测试控制器作为语法?
【发布时间】:2017-08-11 15:08:13
【问题描述】:

我目前正在为一个应用编写一些量角器测试。但是在应用程序中,我使用控制器作为语法,因为我想要处理的部分是组件。问题是当我使用 ""$ctrl.functionName"" 的选择器时,它给了我一个非法的选择器语句。

有人对此有任何想法吗?

let btn = $$("button[ng-click^=$ctrl.initRequest].secondary.bf-btn");
        expect(btn.isDisplayed()).toBe(true);

错误信息是

Failed: invalid selector: An invalid or illegal selector was specified

【问题讨论】:

  • 请分享代码。
  • 你为什么不给你的按钮分配一个语义ID或类,而不是依赖低级的实现细节来选择它?测试不必关心控制器与控制器。它应该找到由“init-request”标识的按钮(例如),并测试它是否显示。
  • 我认为从现在开始我们必须这样做,应用程序上的许多功能都没有得到严格的 ID。必须邮寄工作人员开始将 id 放在按钮和元素上。
  • @JBNizet 是对的。除了它不起作用之外,如果您将测试与内部组件结合起来,它们将不断中断。维护噩梦......

标签: angularjs typescript protractor angularjs-controlleras


【解决方案1】:

如果您无法为元素分配有意义的id 或其他属性,则需要修复当前选择器。至少,ng-click 值周围应该有引号:

button[ng-click^='$ctrl.initRequest'].secondary.bf-btn

请注意,也不需要引号的稍微好一点的版本是使用部分匹配:

button[ng-click*=initRequest].secondary.bf-btn

然后,看看你是否可以放弃有问题的课程,然后:

button[ng-click*=initRequest]

【讨论】:

  • 这很完美!非常感谢!团队的其他成员现在正在接受 ID 无处不在的指示!
猜你喜欢
  • 2016-11-13
  • 2016-02-12
  • 2016-03-21
  • 2018-12-31
  • 1970-01-01
  • 2012-04-20
  • 1970-01-01
  • 1970-01-01
  • 2014-10-08
相关资源
最近更新 更多