セレン:リンゴ愛好家向け

こんにちは これは私の新しいSeleniumの記事です。 前に、スケーラブルなSeleniumクラスターの構成について詳しく説明しました( パートIパートII )。 次に、Seleniumを自動テストのデバッグ用ツールとして使用する問題を検討し( onetwo )、最後にWindowsでカオスから秩序を作成することができました( link )。 今日は、リンゴ、より正確には1つの大きなリンゴ(つまりApple)を扱います。




Seleniumは比較的単純なツールですが、Cupertinoのブラウザーで自動テストを実行しようとすると、人生が複雑になります。MacOSのSafariとiOSのモバイルSafariです。 デスクトップブラウザーを完全に理解するために、今日はMacOS用のSafariについて話しましょう。 今日、Safariの最新バージョンはMacOS専用に開発されています。 歴史的に、Safariでの作業は、Seleniumコマンドを内部ブラウ​​ザーコマンドに変換するブラウザー拡張機能を使用してSeleniumに実装されていました。 最初に、拡張機能はSafariに自動的にロードされました。 後で、Safariのセキュリティルールが変更されたため、拡張機能を手動で1回インストールする必要がありました。 最後に、Safari Xのリリースにより、すべてが大幅に変更されました。 Safariは、Chrome用のgeckodriverやFirefox用のsafaridriverに似た、スタンドアロンのWebドライバプロセスsafaridriver使用するようにchromedriverました。 Safariでテストを実行するには、次のものが必要です。


  1. safaridriverなどの空きポートでsafaridriver (通常はSafariとともにインストールされ、 /usr/bin/safaridriver )を起動します。起動するコマンドは次のようになります。


     $ /usr/bin/safaridriver --port 4444 

  2. 次のSelenium URLを使用してテストを実行します。


     http://localhost:4444/ 

  3. 実行中のドライバープロセスを停止します。

簡単そうですね。 そして、そうです! それにもかかわらず、問題がありますsafaridriverは並行してSafariのコピーを1つしかsafaridriverできません。 この制限を克服する方法は? -異なるポートでドライバーを数回実行し、これらのポートを使用して異なるURLでテストを実行します。 シンプルですが、多くの手作業が必要です。 このプロセスを自動化しましょう! これはどのように機能しますか? そして、これがその方法です:



  1. Selenium APIを提供するサーバーを起動し、 safaridriverが配置されている起動時にsafaridriver指示します。
  2. 新しいセッションの要求が到着すると、実行中のサーバーは空きポートを検索して占有します。 次に、このポートでsafaridriverプロセスを開始し、以降のすべてのリクエストをそこでプロキシします。
  3. セッションを閉じる要求safaridriverプロセスも停止します。

説明したアルゴリズムは非常に単純なので、複雑なサーバーの開発は必要ありませんよね? 現在の標準であるSeleniumサーバーをサーバーとして使用する場合、このような単純なタスクには非常に複雑なツールを使用します。 これはなぜですか:


  1. Seleniumサーバー-象のように巨大です! 配布のサイズは20 MBから始まります。
  2. あなたの動物園の別の巨大な生き物-Javaのインストールが必要です。 更新に関するさまざまなポップアップと90年代からのグラフィカルインターフェイス。
  3. 彼は常に空腹であり、理由もなく記憶を食べます。
  4. それはかなり不十分に文書化されており、箱から出して動作しません。 彼を稼ぐには魔術師である必要があります。

要するに、より適切なツールSelenoidを紹介しましょう 。 Selenoidは、ファットなSeleniumサーバーを完全に置き換えるように設計された軽量デーモンです。 SafariでSelenoidを取得するのは非常に簡単です。


  1. 以下のJSONピースをファイルにコピーします(例: ~/browsers.json ):


     { "safari": { "default": "latest", "versions": { "latest": { "image": ["/usr/bin/safaridriver"] } } } } 

  2. Selenoid実行可能ファイルを実行してダウンロードします。


     $ curl -Lo ~/selenoid \ https://github.com/aerokube/selenoid/releases/download/1.3.3/selenoid_darwin_amd64 $ chmod +x ~/selenoid $ ~/selenoid -conf ~/browsers.json -disable-docker 

  3. URLを使用してテストを実行します。

     http://localhost:4444/wd/hub 

Javaと会社をインストールする必要はもうありません! しかし、私のように、これを自分の手で行いたくない場合は、単一行のスクリプトを使用して同様の結果を得ることができます。


 $ curl -Lo ~/cm https://github.com/aerokube/cm/releases/download/1.2.1/cm_darwin_amd64 && \ chmod +x ~/cm && \ ~/cm selenoid start --browsers safari 

必要に応じて、Selenoidの軽量UIをダウンロードして実行することもできます。 詳細については、 ドキュメントを参照してください


Safariでの単純なSeleniumのテストは、これほど近かったことはありません。 良い一日を!



Source: https://habr.com/ru/post/J334048/


All Articles