无法添加自定义命令

时间:2020-05-05 13:51:32

标签: webdriver-io

我想在打字稿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()函数。但是没有运气!

2 个答案:

答案 0 :(得分:1)

一个闲散频道中的好人帮助我找出了确切原因。实际上,我忽略了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。原来这就是原因。现在已解决。

false作为addCommand()中的第三个参数传递来修正它。

答案 1 :(得分:0)

欢迎堆栈溢出!

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