我想在打字稿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()函数。但是没有运气!
答案 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'挂钩。 如果在挂机前调用它,它应该可以工作。