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

こんにちは これは私の新しい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のテストは、これほど近かったことはありません。 良い一日を!








All Articles