エンドツーエンドのテストでクロスプラットフォームのキーボードショートカットを使用する

alecxe

問題:

かなり大きなテストコードベースでは、さまざまなキーボードショートカットを使用しています。たとえば、使用している選択したテキストをコピーしCTRL/COMMAND + Cたり、貼り付けCTRL/COMMAND + vたり、新しいタブを開いたりしますCTRL/COMMAND + T

複数のプラットフォームでテストを機能させるために、ターゲットブラウザが実行されているプラ​​ットフォームに応じCTRLvsのCOMMAND選択を自動化します。ターゲットプラットフォームを決定するために、現在、以下を使用するヘルパー関数を使用していますnavigator.appVersion

this.getControlKey = function () {
    return browser.executeScript("return navigator.appVersion.indexOf('Mac');").then(function (isMac) {
        return isMac ? protractor.Key.COMMAND : protractor.Key.CONTROL;
    });
};

このアプローチの問題getControlKey()は、promise返すことであり、それを使用するたびに、promiseを明示的に解決する必要があります。

helpers.getControlKey().then(function (controlKey) {
    elm.sendKeys(protractor.Key.chord(controlKey, "c"));
});

質問):

  1. ネストを回避し、使用を簡素化することは可能getControlKey()ですか?理想的には、次のように簡単に機能させたいと思います。

    elm.sendKeys(protractor.Key.chord(helpers.getControlKey(), "c"));
    
  2. navigator.appVersionターゲットプラットフォームを決定するために最良のアプローチを使用していますか?より良い方法はありますか?

ギリッシュソーター

2つのシナリオについて、最初の質問に答えるのが最善です-

  • 複数のテスターが自分のマシンでスクリプトを実行する場合、ヘルパーメソッドをonPrepare()関数に配置して、すべてのテストで使用できる定数グローバル変数に値を割り当てることができます。

  • すべてのテストが分散プラットフォームで実行され、すべてのテストが異なるマシンにランダムに割り当てられる場合、その場合、beforeAll()関数内のそのテストの定数ローカル変数に値を割り当てるヘルパーメソッドを作成すると便利です。

2番目の質問に移ると、分度器のgetCapabilities()方法を使用してテスト仕様が実行されているプラ​​ットフォームを取得する別の方法もあります

プラットフォームタイプを取得するためのコード-

//Below code can be placed either in `onPrepare()` function or `beforeAll()` function depending the need.
//If the below code is placed in the `beforeAll()` function then i guess there won't be any need for a global variable.

browser.controlKey = protractor.Key.CONTROL; //browser.controlKey is a global variable and can be accessed anywhere in the test specs
browser.getCapabilities().then(function(capabilities){
    if(capabilities.caps_.platform === "MAC")
        browser.controlKey = protractor.Key.COMMAND;
});

使用法:

elm.sendKeys(protractor.Key.chord(browser.controlKey, "c")); //if its stored as global variable

それが役に立てば幸い。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

Windows 7エクスプローラーのキーボードショートカット:フォーカスをファイル/フォルダー/コンテンツ領域に設定しますか?

分類Dev

Windowsエクスプローラーでキーボードショートカットを使用してテキストファイルを作成する

分類Dev

Windowsエクスプローラー-ファイル/フォルダーを複製するためのキーボードショートカット

分類Dev

カスタムキーボードショートカットを使用してフォーカスのあるプログラムを強制終了する方法

分類Dev

Windowsエクスプローラーでファイルを選択するためのキーボードショートカット

分類Dev

Windowsエクスプローラのアドレスバーのキーボードショートカット

分類Dev

フォーカスを解除するフォームコントロールへのキーボードショートカット

分類Dev

チームエクスプローラーでチェックコメントを入力した後、チェックインするためのキーボードショートカットはありますか?

分類Dev

MS Access:フォームのテキストボックスをクエリでバインドする方法は?

分類Dev

返信をプレーンテキストにフォーマットするためのOutlookキーボードショートカット?

分類Dev

コンテンツをフレックスエンドで正当化する方法、フラッターのボトムをゼロにする方法

分類Dev

非表示のデスクトップ ショートカット/アイコンにキーボード ショートカットを使用する方法

分類Dev

Atomキーボードショートカット:プロジェクトツリーとワークスペースペインの間でフォーカスを切り替えますか?

分類Dev

spyderIDEのキーボードショートカットをエクスポート/インポートするにはどうすればよいですか?

分類Dev

角度グリッドには、インライン剣道グリッドのエディターテンプレート(リアクティブフォーム)を含む列があります。テンプレートコントロール(テキストボックス)とフォームはリンクしません

分類Dev

Lubuntuの「フォーカスアプリケーション」キーボードショートカット(LXDE)

分類Dev

Windowsエクスプローラーで「選択解除」するためのキーボードショートカットはありますか?

分類Dev

Eclipse IDEのキーボードショートカットを使用して、プロジェクトエクスプローラービューで現在のファイルの親フォルダーに移動するにはどうすればよいですか?

分類Dev

オートコンプリートテキストボックスを作成する方法は、どのプロシージャが3つのパラメータ、つまりテキストボックス/パラメータフィールド、クエリの選択、接続を持っているかです。

分類Dev

C ++アプリケーションのエンドツーエンドテストフレームワーク

分類Dev

ボタンをクリックすると、プログラムでテキストフィールドにフォーカスが移動します

分類Dev

ネットワークインターフェイスタイプの検出に到達可能性フレームワークを使用しているときに、iOS(クロスプラットフォームC ++ライブラリソリューション)でエラーをビルドする

分類Dev

パッケージエクスプローラーのAndroidStudioキーボードショートカットとは何ですか?

分類Dev

Lubuntuラップトップキーボードのスクリーンショットのショートカットは何ですか?

分類Dev

ストーリーボード-プログラムでナビゲーションコントローラーのトップバーを非表示にする

分類Dev

TYPO3フロントエンドエクステンションで複数のファイルのアップロードを実装する方法

分類Dev

Woocommerceバリエーション属性ドロップダウンのデフォルトの「オプションの選択」テキストを別のカスタムテキストに置き換えます

分類Dev

GoogleAppsスクリプトプログラミング環境のキーボードショートカット

分類Dev

Angularの矢印キーでドロップダウンオートコンプリートオプションにフォーカスを設定する

Related 関連記事

  1. 1

    Windows 7エクスプローラーのキーボードショートカット:フォーカスをファイル/フォルダー/コンテンツ領域に設定しますか?

  2. 2

    Windowsエクスプローラーでキーボードショートカットを使用してテキストファイルを作成する

  3. 3

    Windowsエクスプローラー-ファイル/フォルダーを複製するためのキーボードショートカット

  4. 4

    カスタムキーボードショートカットを使用してフォーカスのあるプログラムを強制終了する方法

  5. 5

    Windowsエクスプローラーでファイルを選択するためのキーボードショートカット

  6. 6

    Windowsエクスプローラのアドレスバーのキーボードショートカット

  7. 7

    フォーカスを解除するフォームコントロールへのキーボードショートカット

  8. 8

    チームエクスプローラーでチェックコメントを入力した後、チェックインするためのキーボードショートカットはありますか?

  9. 9

    MS Access:フォームのテキストボックスをクエリでバインドする方法は?

  10. 10

    返信をプレーンテキストにフォーマットするためのOutlookキーボードショートカット?

  11. 11

    コンテンツをフレックスエンドで正当化する方法、フラッターのボトムをゼロにする方法

  12. 12

    非表示のデスクトップ ショートカット/アイコンにキーボード ショートカットを使用する方法

  13. 13

    Atomキーボードショートカット:プロジェクトツリーとワークスペースペインの間でフォーカスを切り替えますか?

  14. 14

    spyderIDEのキーボードショートカットをエクスポート/インポートするにはどうすればよいですか?

  15. 15

    角度グリッドには、インライン剣道グリッドのエディターテンプレート(リアクティブフォーム)を含む列があります。テンプレートコントロール(テキストボックス)とフォームはリンクしません

  16. 16

    Lubuntuの「フォーカスアプリケーション」キーボードショートカット(LXDE)

  17. 17

    Windowsエクスプローラーで「選択解除」するためのキーボードショートカットはありますか?

  18. 18

    Eclipse IDEのキーボードショートカットを使用して、プロジェクトエクスプローラービューで現在のファイルの親フォルダーに移動するにはどうすればよいですか?

  19. 19

    オートコンプリートテキストボックスを作成する方法は、どのプロシージャが3つのパラメータ、つまりテキストボックス/パラメータフィールド、クエリの選択、接続を持っているかです。

  20. 20

    C ++アプリケーションのエンドツーエンドテストフレームワーク

  21. 21

    ボタンをクリックすると、プログラムでテキストフィールドにフォーカスが移動します

  22. 22

    ネットワークインターフェイスタイプの検出に到達可能性フレームワークを使用しているときに、iOS(クロスプラットフォームC ++ライブラリソリューション)でエラーをビルドする

  23. 23

    パッケージエクスプローラーのAndroidStudioキーボードショートカットとは何ですか?

  24. 24

    Lubuntuラップトップキーボードのスクリーンショットのショートカットは何ですか?

  25. 25

    ストーリーボード-プログラムでナビゲーションコントローラーのトップバーを非表示にする

  26. 26

    TYPO3フロントエンドエクステンションで複数のファイルのアップロードを実装する方法

  27. 27

    Woocommerceバリエーション属性ドロップダウンのデフォルトの「オプションの選択」テキストを別のカスタムテキストに置き換えます

  28. 28

    GoogleAppsスクリプトプログラミング環境のキーボードショートカット

  29. 29

    Angularの矢印キーでドロップダウンオートコンプリートオプションにフォーカスを設定する

ホットタグ

アーカイブ