browser.addcommand () с использованием машинописного текста в webdriverIO «Невозможно скомпилировать TypeScript: ошибка TS2339: свойство '...' не существует для типа 'Element'». - PullRequest
0 голосов
/ 04 августа 2020
• 1000 : "

my 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'».

Ответы [ 2 ]

0 голосов
/ 29 августа 2020

Наконец-то у меня есть решение, вам нужно добавить wdio.d.ts в свойство types в tsconfig. json.

-      "types": ["node", "@wdio/sync", "@wdio/jasmine-framework"]
+      "types": ["node", "@wdio/sync", "@wdio/jasmine-framework", "./wdio"]
0 голосов
/ 27 августа 2020

У меня такая же проблема. wdio.d.ts ничего не меняет во время выполнения, я получаю TS2339.

Единственное (плохое) решение, которое я нашел до сих пор, это выщипывание '@ ts-ignore' каждый раз, когда я вызываю такой метод.

...