browser.actions()没有perform()

时间:2016-02-01 17:17:51

标签: javascript selenium selenium-webdriver protractor

最近,我注意到我们的一个测试有以下几行:

browser.actions().sendKeys(protractor.Key.RETURN);

意图是可以理解的,但它实际上什么都不做,因为perform()没有被调用。出于某种原因,测试本身正在通过,这表明测试逻辑和以下期望存在问题。

我如何尽早发现此类问题,并且理想情况下,防止将此量角器/ WebDriverJS使用违规提交到存储库?

2 个答案:

答案 0 :(得分:1)

一种选择是使用静态代码分析 - 有一个ESLint linting实用程序,它有一组不同的插件。如今,有一个eslint-plugin-protractor plugin除了其他特定于量角器的违规行为外,还有browser.actions() without perform()

以下是此案例中ESLint运行的输出:

/Users/user/job/app/specs/test.spec.js
36:13  error    No perform() called on browser.actions()        protractor/missing-perform

答案 1 :(得分:1)

我希望这可以通过(可编写脚本的)编辑器插件或linter规则来实现。

那就是说,评估测试脚本的最好方法当然是实际运行 - 但也要确保所有测试操作都有相应的断言/验证。

您的Key.RETURN必须对DOM产生一些影响,或者启动一些操作,可以检测到其结果(页面更改,数据更改等),这可能比有意义且更容易阅读静态分析规则。