Selenium+testng を使用して Docker で Web 自動化を実現する方法

Selenium+testng を使用して Docker で Web 自動化を実現する方法

序文

長い間さまざまな資料を読んで、ついに selenium+testng のパラメータ化の問題を解決しました。インターネットでいくつか見つけられるかもしれませんが、これらはすべて私の経験です。この記事では、Selenium+testng を使用した Docker による Web 自動化の実現に関する関連コンテンツを主に紹介します。詳しい紹介を見てみましょう。

Windows で selenium+testng を使用して Web 自動化環境を構築する

自動化に携わったことがある人なら、Selenium Web 環境の構築、特に Java での Selenium の使用についてよく知っているはずです。

まず、JDK をビルドしてインストールし、Java 開発環境を構成します (まだ方法がわからない場合は、PP をプレイする必要があります)。次に、公式 Web サイトから対応する Selenium jar パッケージをダウンロードしてプロジェクトにロードするか、Maven を使用して pom.xml ファイルを変更し、Selenium 依存パッケージを直接ロードします。

 <依存関係>
 <groupId>org.seleniumhq.selenium</groupId>
 <artifactId>セレン-Java</artifactId>
 <バージョン>3.14.0</バージョン>
 </依存関係>

次に、対応するブラウザ ドライバー ファイルを追加すると、環境は基本的に準備完了となり、自動テスト コードの道を開始できます。

もちろん、コードを書く過程では、誰もが人気のユニット テスト フレームワーク testng も使用します。これを基にテスト環境を追加するにはどうすればよいでしょうか?実際、これは難しい作業ではありません。testng の公式 Web サイト (https://testng.org/doc/index.html) には、Eclipse や IEDA などのエディターにプラグインをインストールする方法が説明されています。たとえば、Eclipse では、マーケットに直接アクセスして testng を検索し、インストールすることができます。Maven を使用する場合は、依存パッケージを pom.xml に追加する必要があります。

<リポジトリ>
<リポジトリ>
<id>jcenter</id>
<name>バイナリトレイ</name>
<url>http://jcenter.bintray.com</url>
</リポジトリ>
</リポジトリ>

<依存関係>
<グループID>org.testng</グループID>
<artifactId>テスト</artifactId>
<バージョン>6.10</バージョン>
<scope>テスト</scope>
</依存関係>

ダウンロードとインストールが完了するのを待つだけで、あとはコードを記述するだけで、自由に自分を表現できます。

しかし、今日紹介したいのは上記のことではありません。このような環境の構築は非常に簡単です。ほとんどの人は実際にその方法を知っています。落とし穴はそれほど多くありません。それは単なるコード環境です。

今回対処するトラブルは何でしょうか?ますます発展する Docker モードでは、上記のコンパイル環境は Linux システム上で実行できません。コード エディターも、インターフェイスも、ブラウザーもありません。どうすればよいでしょうか?見てみましょう。

Dockerのインストールと使用

同様に、java+selenium+testng も引き続き必要ですが、環境は Windows から Linux に変更されています。

docker の使用に関して、インストールと起動のプロセスを簡単に紹介します。

直接インストールするには、 yum install dockerコマンドを使用します。

service docker start啟

次に、 docker pull centos centos バージョンの最も基本的な docker イメージを取得します。

現在のすべてのイメージは、 docker imagesコマンドで一覧表示できます。

Linux イメージを確認した後、 docker run -it -dイメージ名を使用して Linux コンテナを実行します ( -it -dパラメータに注意してください。コンテナがない場合、すぐにハングします)。

コンテナに入るには、まず docker ps を使用して、現在実行中のすべてのコンテナを表示します。見つからない場合は、コンテナが起動されていないか、シャットダウンされていることを意味します。docker docker psコンテナ ID を一覧表示します。

コンテナ内の Linux にログインするには、 docker attach container id を使用します。

Docker での Java 環境の構築

コンテナ内の Linux は、実際には通常の Linux の動作と同じです。

まず、JDK をインストールします。

jdk-8u181-linux-x64.tar.gz パッケージをダウンロードします。

tar -xzvf jdk-8u181-linux-x64.tar.gzを実行して解凍し、jdk1.8.0_181 ディレクトリを取得します (/root/java/ ディレクトリに保存されていると仮定します)。

Java 環境変数を設定します。

環境変数ファイルを編集します: vi /etc/profile

コンテンツを追加:

 JAVA_HOME=/root/java/jdk1.8.0_181 をエクスポートします。 
 エクスポート JRE_HOME=${JAVA_HOME}/jre
 エクスポート CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib 
 PATH=${JAVA_HOME}/bin:$PATH をエクスポートします

環境変数の設定を更新します。

source /etc/profile

Java バージョンが有効かどうかを確認します。

java -version

この時点で、Java 環境は解決されています。特に難しいことはありません。ステップごとに実行してください。

Docker でのテスト環境の構成

次は testng です。環境は java と似ており、環境変数にも関連しているため、最初に解決します。

testng-6.14.3.jar パッケージをダウンロードします。

tar -xzvf testng-6.14.3.jarを実行してファイルを解凍し、testng ディレクトリを取得します (/root/java/testng/ ディレクトリにあると想定)。

環境変数ファイルの編集を続けます:

vi /etc/profile

コンテンツを追加:

エクスポート TESTNG_HOME=/root/java/testng
エクスポート CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib:$CLASSPATH:$TESTNG_HOME/testng-6.14.3.jar

環境変数の設定を更新します。

source /etc/profile

ここで、testng 環境変数に注意してください。CLASSPATH は、Java 環境に基づいて追加されます。Windows で構成する場合は、区切り文字を ; に変更する必要があり、環境変数の呼び出し形式が異なります。いくつかの違いがあります。

まあ、これは簡単なことではないかと思う人もいるかもしれません。

しかし、この時点で実行を続けると、エラーが出始め、深い穴に陥っていることがわかります。これは、開発環境全体から外れているためです。

まず、testng の実行手順について説明します。自分で test.java ファイルを作成するとします。このファイルはシンプルにし、他の jar パッケージを含めないようにしてください。パッケージ名はシンプルで、クラス名は test です。

 javac テスト.java
 java org.testng.TestNG -テストクラス simple.test

非常に単純に見えますが、実行すると至る所でエラーが発生します。javac test.java を実行すると、一般的なエラーは次のようになります。

java.lang.NoClassDefFoundError: com/beust/jcommander/

これは、コンパイルに使用される jar パッケージが見つからないためです。jcommander-1.72.jar をダウンロードする必要があります。これを testng jar パッケージと一緒に配置します (/root/java/testng/ ディレクトリに配置されていると仮定します)。

CLASSPATH 環境変数を追加する必要があります:

CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib:$CLASSPATH:$TESTNG_HOME/testng-6.14.3.jar:$TESTNG_HOME/jcommander-1.72.jar

環境構成の更新を続行します。

source /etc/profile

その後は、通常はスムーズにコンパイルでき、test.class ファイルが表示されます。

testng 関連のパッケージが存在しないなどのその他のエラーが発生する場合は、環境変数が正しく設定されているかどうかを確認してください。

最後のステップは操作であり、ここでほとんどの問題に遭遇することになります。

まず構造について説明しましょう。たとえば、上記の simple.test クラスの場合、test.java を保存するための simple フォルダーを作成する必要があります。

CLASSPATH環境変数に、テストコードファイルとパッケージの最上位ディレクトリを追加する必要があります。

 /root/java/testng/
 /root/java/testng/simple/test.java

この構造上の前提に基づいて、次のコマンドで実行できます。

java org.testng.TestNG -テストクラス simple.test

結果が表示され、操作が成功したことを意味します。

実行されたテストの合計数: 1、失敗: 0、スキップ: 0

コード内にテスト ケース @Test があるのに、実行結果が 0 と表示される場合は、テストは失敗したものの、明確なエラーはないことを意味します。

もちろん、これはまだ終わりを意味するものではありません。

さまざまな依存 jar パッケージが不足しているために問題が発生する可能性もあります。

これらのjarパッケージはパラメータを通じて導入できる

 /root/java/testng/
 /root/java/testng/simple/test.java

Windows のブラウザをリモートで呼び出す

環境問題が解決すれば、すべてうまくいくと思いますか?もう1つ、ブラウザについてはどうでしょうか?ブラウザがない問題を解決するにはどうすればよいですか?

Windows マシンにデプロイするには、Selenium に付属のサーバーを使用してください。

この問題の解決策は比較的簡単です。

selenium-server-standalone-3.14.0.jar パッケージをダウンロードします。

指定されたディレクトリ(たとえば、ドライブ C のルート ディレクトリ)に配置します。

このディレクトリにcdします: cd C:\

次のコマンドを実行して、Selenium リモート サービスを開きます。

java -jar selenium-server-standalone-3.14.0.jar -ポート 6666

次に、ブラウザの指定方法を尋ねる人がいるでしょうか?

Windows で開始したばかりのサービスを呼び出すには、Java コードで次のステートメントを使用するだけです。

WebDriver ドライバー = new RemoteWebDriver("http://ip:6666/wd/hub/", DesiredCapabilities.chrome());

また、ブラウザ ドライバー ファイルはサーバー上でも必要であることに注意してください。jar パッケージと一緒に配置するだけで完了です。いじくり回すのが好きなら、自分で調べることができます。唯一の違いは、サービスを開始するときにいくつかのパラメーターを指定する必要があることです。

docker 全体は、Selenium + Java を使用して、Windows 上の Chrome ブラウザをリモートで呼び出し、Web 自動化環境の構築を完了します。

今後は、docker での selenium+testng を使用した Web 自動化コードの記述を更新する予定です。次回の更新をお待ちください。

要約する

上記はこの記事の全内容です。この記事の内容が皆さんの勉強や仕事に一定の参考学習価値を持つことを願っています。ご質問があれば、メッセージを残してコミュニケーションしてください。123WORDPRESS.COM を応援していただきありがとうございます。

以下もご興味があるかもしれません:
  • Docker で Selenium グリッド分散環境を構築する実用的な方法
  • 自動ヘルスレポートを実現するDocker+Selenium方式
  • Docker ベースの Selenium 分散環境の構築
  • Docker+Selenium Grid に基づく技術アプリケーションをテストするためのサンプル コード

<<:  vite を使用して vue3 アプリケーションを構築する方法

>>:  MySQL の列から行への変換のヒント (共有)

推薦する

mysql 8.0.19 win10 クイックインストールチュートリアル

このチュートリアルでは、参考までにMySQL 8.0.19のインストールチュートリアルを共有します。...

MysqlクエリJSON結果に関連する関数の概要

JSON 形式のフィールドは、MySQL 5.7 で追加された新しい属性ですが、基本的には文字列とし...

js の toString メソッドの 3 つの機能

目次1. toStringメソッドの3つの機能2. オブジェクトを表す文字列を返す3. カスタム t...

JavaScript のよりエレガントなエラー処理方法 async await

目次背景なぜエラー処理が必要なのでしょうか? async await より適切なエラー処理まとめ要約...

Vueキャッシュ機能の使い方

目次vue2のキャッシュ機能Vue キャッシュ関数の変換最適化要約するvue2のキャッシュ機能vue...

MySQLでANDとORを組み合わせる問題を解決する

以下のように表示されます。 SELECT prod_name,prod_price FROM pro...

ElementUI ページネーション コンポーネントの使い方 Vue でのページネーション

ElementUIページングコンポーネントPagination in Vueの使用は参考になります。...

キャンバスはスクラッチカード効果を描画します

この記事では、キャンバスでスクラッチカード効果を描画するための具体的なコードを参考までに共有します。...

Dockerコンテナのk8sデプロイメントの実装

環境: (docker、k8s クラスター)、前回 docker で起動した Java プログラムの...

MySQLのバックアップとリカバリの簡単な分析

目次1. はじめに2. バックアップとリカバリの簡単な定義3. 復旧計画で考慮すべきいくつかの要素4...

html2canvas を使用して HTML コードを画像に変換する方法

コードを画像に変換するにはhtml2canvas は、ブラウザから Web ページのスクリーンショッ...

Alibaba Cloud ServerにMySQLデータベースをインストールする方法の詳細な説明

序文学習中に Zookeeper をインストールする必要があったため、仮想マシンに常に問題が発生した...

JS を使用してファイルを操作する (FileReader は --node の fs を読み取ります)

目次JS はファイルを読み取る FileReader書類イベントとメソッド基本的な使い方イベント処理...

HTML テーブル マークアップ チュートリアル (9): セル間隔属性 CELLSPACING

テーブルがコンパクトになりすぎないように、テーブル内のセル間に一定の距離を設定できます。基本的な構文...