无法添加自定义命令

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了无法添加自定义命令相关的知识,希望对你有一定的参考价值。

我想在打字稿webdriverIO项目中创建自定义命令。但是无论我做什么,该命令总是以错误结尾:TypeError:browser.waitAndClick不是一个函数。基本上,我想添加与webdriverIO文档中提到的功能相同的功能。我正在从我的规格中的beforeAll()中添加它。

import { DEFAULT_TIMEOUT } from "../constants";
class CustomCommand {
    private static alreadyAdded = false;
    static addCommands(){
        if(!this.alreadyAdded) {
            browser.addCommand('waitAndClick', (el: WebdriverIO.Element) => {
                el.waitForDisplayed({timeout: DEFAULT_TIMEOUT});
                el.click();
            }, true);

            browser.addCommand('waitAndSetValue', (el: WebdriverIO.Element, text: string) => {
                el.waitForDisplayed({timeout: DEFAULT_TIMEOUT});
                el.setValue(text);
            }, true);

            this.alreadyAdded = true;
        }
    }
}

export default CustomCommand;

并且我从规范的beforeAll()调用此addCommands()函数。但没有运气!

答案

欢迎使用堆栈溢出!

请注意,根据文档here,webdriverio中没有'beforeAll'挂钩。如果在挂机前调用它,它应该可以工作。

另一答案

休闲频道中的一位好人帮我找出了确切原因。实际上,我忽略了doc中的某些内容:If you register a custom command to the browser scope, the command won’t be accessible for elements. Likewise, if you register a command to the element scope, it won’t be accessible in the browser scope。原来这就是原因。现在已解决。

以上是关于无法添加自定义命令的主要内容,如果未能解决你的问题,请参考以下文章

VSCode自定义代码片段4——cli的终端命令大全

VSCode自定义代码片段15——git命令操作一个完整流程

VSCode自定义代码片段15——git命令操作一个完整流程

VS中添加自定义代码片段——偷懒小技巧

将vscode打造成无敌的IDE添加自定义的snippet

将vscode打造成无敌的IDE添加自定义的snippet