2017-10-15 7 views
1

私はaddCommandに機能を追加する、と私はそれを使用すると、次のエラーを取得しています:addCommand(webdriverio)とカスタムコマンドを追加するとき、TSエラーを持つ

browser.addCommand("test" ,() => {console.log("test"); }) 
browser.test(); 

:例えば

[ts] Property 'WaitForElementsAmount' does not exist on type 'Client<void>'. 

を最後の行にエラーが発生します。

実際に動作します(jsコードは正しい)、テストはうまく動作します。 私の質問はどうすればこの問題を解決できますか?

答えて

0

最初に:コードにいくつかのタイプミスがありますが、browser.addCommand()を閉じるには欠落しています。

browser.addCommand("test" ,() => {console.log("test"); }); 
browser.test(); 

第二:このようなものでなければなりません私はあなたがここで入力しながら、それが唯一の誤植だったと思うので、実際の答えは、カスタムコマンドを宣言し、それらの実装の詳細を知るには、このリンクをたどることであろう: Where do I add custom commands in WebdriverIO with wdio testrunner?

0

私は今日もこの同じ問題で苦労しましたが、私はそれを得ました。

@ types/webdriverioを使用していると仮定して、カスタムコマンドの宣言でWebdriverIO.Clientインターフェイスを拡張する必要があります。可能であれば、カスタムコマンドが.tsファイルで定義されていることを確認してください。

declare namespace WebdriverIO { 
    interface Client<T> { 
     doCustomThing(): void; 
    } 
} 
:カスタムコマンドはtypescriptです実装を取得できない場合、あなたはまだ、このようになります.d.tsファイルにそれらを別々に宣言することができ

declare global { 
    namespace WebdriverIO { 
     interface Client<T> { 
      doCustomThing: typeof doCustomThing; 
     } 
    } 
} 

function doCustomThing() { 
    console.log("test"); 
} 

//both of these should now work 
browser.addCommand('doCustomThing' , doCustomThing) 
browser.doCustomThing(); 

:次に、あなたはこのような何かを行うことができます

しかし、別々のファイルで別々の宣言と実装を維持し、それらが同期していることを確認する必要があります。私はあなたが選択肢がない限り、そのルートを実行するつもりはありませんが、プレーンJSで実装を維持する。

これは、Typescript 2.6.1、webdriverio 4.9.10、および@ types/webdriverio 4.8.6を使用して正常にテストされました。

注:最初の例では、グローバルスコープ内のWebdriverIO名前空間の定義を変更するように指定する必要がありますが、2番目の方法では暗黙的にグローバルスコープで作業しています。これは、最初のモジュールはモジュール内にあり、2番目のモジュールはモジュールではないため、何もインポートまたはエクスポートしないためです。詳細は、https://www.typescriptlang.org/docs/handbook/modules.htmlを参照してください。

関連する問題