selenium - ブラウザ自動化フレームワークとエコシステム。

(A browser automation framework and ecosystem.)

Created at: 2013-01-15 05:40:56
Language: Java
License: Apache-2.0

セレン

CI - ルビー CI - パイソン CI - JavaScript CI - ジャワ

セレン

Seleniumは、Webブラウザの自動化を可能にするさまざまなツールとライブラリをカプセル化した包括的なプロジェクトです。Seleniumは特にW3C WebDriver仕様のインフラストラクチャー、つまりすべての主要なWebブラウザと互換性のあるプラットフォームと言語に依存しないコーディングインターフェイスを提供します。

このプロジェクトは、コードの開発と維持に数千時間を惜しみなく寄付したボランティアの貢献者によって可能になりました。

Selenium のソースコードは Apache 2.0 ライセンスの下で利用可能である。

ドキュメンテーション

物語のドキュメント:

API ドキュメント:

プル要求

プルリクエストを送信する前に、CONTRIBUTING.md をお読みください。

必要条件

  • Bazelisk は、ファイルで指定された Bazel のバージョンを自動的にダウンロードし、すべてのコマンドライン引数を透過的に実際の Bazel バイナリに渡す Bazel ラッパーです。
    .bazelversion
  • Java 11 OpenJDK の最新バージョン
  • java
    (JDKから実行可能ファイルを使用するが、JREは使用しないことを確認してください)。
    jar
    $PATH
    java
    • これをテストするには、コマンド を実行してみてください。JREのみがインストールされている場合、このコマンドは存在しません。コマンドラインオプションのリストが表示された場合は、JDKを適切に参照しています。
      javac
  • Python 3.7 以降
    python
    PATH
  • ルビー3 +
    ruby
    PATH
  • Python の tox 自動化プロジェクト:
    pip install tox
  • macOS ユーザー:
    • コマンドラインツールを含む最新バージョンのXcodeをインストールします。このコマンドは動作するはずです
      xcode-select --install
    • アップルシリコンMacは、自分のファイルに追加する必要があります。私たちは、これが長期的には必要でないことを確認するために働いています。
      build --host_platform=//:rosetta
      .bazelrc.local
  • ウィンドウズ ユーザー:
    • 最新バージョンの Visual Studio (コマンド ライン ツールとビルド ツールがインストールされている)
    • BAZEL_VS
      環境変数は、ビルドツールの場所を指す必要があります。
      C:\Program Files (x86)\Microsoft Visual Studio\2019\BuildTools
    • BAZEL_VC
      環境変数は、コマンドラインツールの場所を指す必要があります。
      C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC
    • BAZEL_VC_FULL_VERSION
      環境変数には、インストールされているコマンドラインツールのバージョンが含まれている必要があります。
      14.27.29110
    • 詳細なセットアップガイドは、ジムエヴァンの投稿で見ることができます
    • ジムのブログの指示に従っていた場合は、 .
      C:\tools\msys65\usr\bin
      PATH

インターネットエクスプローラドライバ

IE ドライバーをコンパイルする場合は、次のものも必要です。

ビルドはどのプラットフォームでも動作しますが、Windowsでビルドしていない場合はIEのテストは暗黙のうちにスキップされます。

建物

GitPod で貢献する

GitPod は、すぐに使用できる開発環境を提供します。

Gitpodで開く

ローカルマシンを設定して使用するには、読み続けてください。

バゼル

BazelはGoogleの素晴らしい人々によって建てられました。Bazel は依存関係のダウンロードを管理し、Selenium バイナリを生成し、テストを実行し、すべてをかなり迅速に実行します。

Bazel を実行するためのより詳細な手順は以下にありますが、Java フォルダと javascript フォルダをエラーなく正常にビルドできる場合は、システムに正しいバイナリがあることを確信する必要があります。

構築前

Firefox がインストールされていて、最新の geckodriver が .これを時々更新する必要があるかもしれません。

$PATH

一般的なビルドターゲット

ジャワ

クリックしてJavaビルド手順を見る

ソースからSeleniumの最も一般的に使用されるモジュールを構築するには、ルートプロジェクトフォルダから次のコマンドを実行します。

bazel build java/...

あなたが実行することができますテストしたい場合は、次のコマンドを実行してそうすることができます

bazel test //java/... --test_size_filters=small,medium,large --test_tag_filters=<browser>

議論は小、中、大を取ります。小は単体テストに似ており、中は統合テストに似ており、大はエンドツーエンドのテストに似ています。

test_size_filters

これにより、ブラウザ名と、コードベースで見つけることができるいくつかの異なるタグを渡すことができます。

test_tag_filters

グリッド・デプロイメント jar をビルドするには、次のコマンドを実行します。

bazel build grid

ログには、出力jarがどこにあるかが表示されます。

ジャバスクリプト

クリックして JavaScript ビルド手順を見る

すべてのJavaScriptコードをビルドしたい場合は、次のコマンドを実行します。

bazel build javascript/...

NodeJSバインディングを構築するには、次のコマンドを実行する必要があります。

bazel build //javascript/node/selenium-webdriver

テストを実行するには、次のコマンドを実行します。

bazel test //javascript/node/selenium-webdriver:tests

環境変数にブラウザの名前を渡すことができます。

SELENIUM_BROWSER

NPM に発行するには、次のコマンドを実行します。

bazel run //javascript/node/selenium-webdriver:selenium-webdriver.publish

ニシキヘビ

クリックして Python ビルド手順を見る

Pythonバインディングをビルドしたい場合は、次のコマンドを実行します。

bazel build //py:selenium

テストを実行するには、次のコマンドを実行します。

bazel test //py:test-<browsername>

追加すると、使用するブラウザとドライバがダウンロードされます。

--//common:pin_browsers

ローカルにインストールするには、次のコマンドを実行します。

bazel build //py:selenium-wheel
pip install bazel-bin/py/selenium-*.whl

実行を公開するには:

bazel build //py:selenium-wheel
twine upload bazel-bin/py/selenium-*.whl

ルビー

クリックして Ruby ビルド手順を見る

Rubyコードをビルドするには、次のコマンドを実行します。

bazel build //rb/...

。網

クリックすると、.NET ビルド ステップが表示されます。

.NET コードをビルドするには、次のコマンドを実行します。

bazel build //dotnet/...

また

bazel build //dotnet/test/common:chrome

ビルドの詳細

Bazel ファイルは BUILD.bazel と呼ばれ、モジュールがビルドされる順序はビルドシステムによって決まります。個々のモジュールをビルドする場合 (すべての依存モジュールが以前にビルドされていると仮定して)、次のことを試してください。

bazel test javascript/atoms:test

この場合、 はモジュールディレクトリであり、 はそのディレクトリのファイル内のターゲットです。

javascript/atoms
test
BUILD.bazel

ビルドターゲットがログ内でスクロールして過ぎるのがわかるので、個別に実行することもできます。

ビルド出力

bazel
は、各ディレクトリに接頭辞を持つディレクトリの最上位グループを作成します。
bazel-

一般的なタスク (バゼル)

ソースからSeleniumバイナリの大部分を構築するには、ルートフォルダから次のコマンドを実行します。

bazel build java/... javascript/...

プロジェクトの特定の領域内でテストを実行するには、"test" コマンドを使用し、その後にフォルダーまたはターゲットを指定します。テストは "小"、"中"、または "大" でタグ付けされ、オプションでフィルター処理できます。

--test_size_filters

bazel test --test_size_filters=small,medium java/...

Bazel の "test" コマンドは、統合テストを含むパッケージ内のすべてのテストを実行します。がブラウザを起動し、かなりの時間とリソースを消費することを期待してください。

test java/...

固定されたブラウザのバージョンを最新の安定バージョンにバンプするには:

bazel run scripts:pinned_browsers > temp.bzl && mv temp.bzl common/repositories.bzl

コードの編集

ほとんどのチームは Intellij IDEA または VS を使用しています。日々の編集のためのコード。IntelliJで作業している場合は、独自のサイトに文書化されているBazel IJプラグインをインストールすることを強くお勧めします。

IntelliJ と Bazel プラグインを使用している場合、scripts/ij.bazelproject のツリーにプロジェクトビューがチェックインされ、起動やコードの編集が容易になり:)

ツアー

コードベースは、通常、コンポーネントの作成に使用される言語を中心にセグメント化されます。Selenium は JavaScript を多用しているので、そこから始めましょう。まず、開発サーバーを起動します。

bazel run debug-server

次に、http://localhost:2310/javascript に移動します。ディレクトリの内容が表示されます。ここでは JavaScript の多くの開発にクロージャライブラリを使用しているので、http://localhost:2310/javascript/atoms/test に移動します。

javascript/

このディレクトリ内のテストは、 で終わる名前の通常の HTML ファイルです。1つをクリックしてページをロードし、テストを実行します。

_test.html

ヘルプ
go

より一般的な、しかし基本的な、ヘルプ...

go

./go --help

go
Rake のラッパーなので、標準コマンドを使用して、使用可能なターゲットに関する詳細情報を取得できます。
rake -T

メイヴン自体

セレンはMavenでは作られていません。これは で構築されていますが、これは上で概説したように呼び出されるため、それについてあまり学ぶ必要はありません。

bazel
go

そうは言っても、Mavenが使用するセレンピースを比較的迅速に構築することは可能です。あなたが本当にこれをしたいのは、あなたのアプリケーションに対してSelenium開発の最先端(私たちは歓迎します)をテストしているときだけです。Selenium独自のテストをスキップしながら、ローカルのmavenリポジトリ()にビルドしてデプロイする最も簡単な方法は次のとおりです。

~/.m2/repository

./go maven-install

メイブンの瓶は今あなたの地元のものにあるはずです。

~/.m2/repository

Java 依存関係の更新

Java 依存関係の座標 (groupId:artifactId:version) は、ファイル maven_deps.bzl で定義されます。これらの依存関係を変更するプロセスは次のとおりです。

  1. (オプション)更新されていない依存関係を検出する場合は、次のコマンドを使用して自動検出を実行できます。
bazel run @maven//:outdated
  1. maven_deps.bzl を変更します。たとえば、前の手順で検出された特定のアーティファクトのバージョンをバンプできます。

  2. 依存関係を反映させます。このプロセスは、Maven 依存関係ツリーの管理に使用されるファイル maven_install.json を更新するために必要です (詳細については、rules_jvm_external を参照してください)。この手順を実行するコマンドは次のとおりです。

REPIN=1 bazel run @unpinned_maven//:pin
  1. (オプション)IntelliJをBazelプラグインで使用する場合は、プロジェクトを同期する必要があります。そのために、BazelSync → Sync Project with BUILD Filesをクリックします。

Running browser tests on Linux

In order to run Browser tests, you first need to install the browser-specific drivers, such as

geckodriver
,
chromedriver
, or
edgedriver
. These need to be on your .
PATH

By default, Bazel runs these tests in your current X-server UI. If you prefer, you can alternatively run them in a virtual or nested X-server.

  1. Run the X server or
    Xvfb :99
    Xnest :99
  2. Run a window manager, for example,
    DISPLAY=:99 jwm
  3. Run the tests you are interested in:
bazel test --test_env=DISPLAY=:99 //java/... --test_tag_filters=chrome

An easy way to run tests in a virtual X-server is to use Bazel's functionality:

--run_under

bazel test --run_under="xvfb-run -a" //java/... --test_tag_filters=chrome

Bazel Installation/Troubleshooting

Selenium Build Docker Image

bazel を使用して開発環境をセットアップするのが難しく、Docker にアクセスできる場合は、dev イメージ ディレクトリの Dockerfile から Selenium のビルドとテストに適した Docker イメージをビルドできます。

マックOS

バゼリスク

バゼリスクは、バゼルのためのMacフレンドリーなランチャーです。インストールするには、次の手順を実行します。

brew tap bazelbuild/tap && \
brew uninstall bazel; \
brew install bazelbuild/tap/bazelisk

Xコード

Xcodeに言及するエラーが発生した場合は、コマンドラインツールをインストールする必要があります。

Mac用Bazelは、正しく設定するためにいくつかの追加の手順が必要です。まず最初に、Bazeliskプロジェクト(philwoの厚意により)を使用して、Bazelの純粋なゴラン実装を使用します。Bazeliskをインストールするには、まずXcodeが協力することを確認してください:次のコマンドを実行します。

xcode-select -p

値が の場合は、bazelisk のインストールを続行できます。ただし、戻り値が の場合は、Xcode システムを正しい値にリダイレクトする必要があります。

/Applications/Xcode.app/Contents/Developer/
/Library/Developer/CommandLineTools/

sudo xcode-select -s /Applications/Xcode.app/Contents/Developer/
sudo xcodebuild -license

最初のコマンドでは、パスワードの入力を求められます。2番目のステップでは、新しいXcodeライセンスを読み、「同意する」と入力して同意する必要があります。

(これらの手順のためのこのスレッドのおかげで)