browser.addcommand() 在 webdriverIO 中使用 typescript "Unable to compile TypeScript: error TS2339: Property '...' does not exist on type 'Element'."
browser.addcommand() using typescript in webdriverIO "Unable to compile TypeScript: error TS2339: Property '...' does not exist on type 'Element'."
我正在努力使用 browser.addCommand(),我使用 WebDriverIO 版本 6 + 打字稿,当我尝试向 wdio.conf.js 和 运行 添加命令时,测试失败了错误“无法编译 TypeScript:”
我的ts.confg:
{
"compilerOptions": {
"baseUrl": ".",
"paths": {
"*": [
"./*"
],
"src/*": [
"./src/*"
],
"test/*": [
"./test/*"
]
},
"sourceMap": false,
"target": "es6",
"module": "commonjs",
"typeRoots": ["./types"],
"types": [
"node",
"@wdio/sync",
"@wdio/jasmine-framework"
],
"include": ["./test/**/*.ts","./types/wdio.d.ts"],
"exclude": [
"./node_modules"
],
}
wdio.d.ts 文件:
declare module WebdriverIO {
interface Element {
waitAndClick: () => void;
}
}
wdio.conf.js 文件:
before: function (capabilities, specs) {
browser.addCommand("waitAndClick", function () {
this.waitForDisplayed({timeout: 5000})
this.click()
}, true)
}
在页面对象中:
$('.classname').waitAndClick();
我可以在上面的示例中看到页面对象中的方法。当我尝试 运行 它失败并出现错误“无法编译 TypeScript:错误 TS2339:属性 'waitAndClick' 在类型 'Element' 上不存在。”
我也遇到了同样的问题。 wdio.d.ts 在 运行 时没有改变任何东西,我得到了 TS2339。
到目前为止我发现的唯一(不好的)解决方案是每次我调用这种方法时都采摘'@ts-ignore'。
我终于有了一个解决方案,你需要在 tsconfig.json 中的类型 属性 中添加 wdio.d.ts。
- "types": ["node", "@wdio/sync", "@wdio/jasmine-framework"]
+ "types": ["node", "@wdio/sync", "@wdio/jasmine-framework", "./wdio"]
我正在努力使用 browser.addCommand(),我使用 WebDriverIO 版本 6 + 打字稿,当我尝试向 wdio.conf.js 和 运行 添加命令时,测试失败了错误“无法编译 TypeScript:”
我的ts.confg:
{
"compilerOptions": {
"baseUrl": ".",
"paths": {
"*": [
"./*"
],
"src/*": [
"./src/*"
],
"test/*": [
"./test/*"
]
},
"sourceMap": false,
"target": "es6",
"module": "commonjs",
"typeRoots": ["./types"],
"types": [
"node",
"@wdio/sync",
"@wdio/jasmine-framework"
],
"include": ["./test/**/*.ts","./types/wdio.d.ts"],
"exclude": [
"./node_modules"
],
}
wdio.d.ts 文件:
declare module WebdriverIO {
interface Element {
waitAndClick: () => void;
}
}
wdio.conf.js 文件:
before: function (capabilities, specs) {
browser.addCommand("waitAndClick", function () {
this.waitForDisplayed({timeout: 5000})
this.click()
}, true)
}
在页面对象中:
$('.classname').waitAndClick();
我可以在上面的示例中看到页面对象中的方法。当我尝试 运行 它失败并出现错误“无法编译 TypeScript:错误 TS2339:属性 'waitAndClick' 在类型 'Element' 上不存在。”
我也遇到了同样的问题。 wdio.d.ts 在 运行 时没有改变任何东西,我得到了 TS2339。
到目前为止我发现的唯一(不好的)解决方案是每次我调用这种方法时都采摘'@ts-ignore'。
我终于有了一个解决方案,你需要在 tsconfig.json 中的类型 属性 中添加 wdio.d.ts。
- "types": ["node", "@wdio/sync", "@wdio/jasmine-framework"]
+ "types": ["node", "@wdio/sync", "@wdio/jasmine-framework", "./wdio"]