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の保存時間の不一致の問題を解決する

Java を使用してシステム時間を取得し、それを MySQL データベースに保存した後、時間タイプが...

JavaScript オブジェクト指向の実践の詳細説明: カプセル化とオブジェクトのドラッグ

目次概要1. DOM要素をアニメーション化する方法2. 現在のブラウザでサポートされている変換互換の...

MySQL 8.0 が起動できない 3534 の解決策

MySQL 8.0 サービスを開始できません最近、 cmdで MySQL サービスを起動するときに遭...

ウェブサイト上で flv/MP4 やその他のビデオ ファイルを再生できない問題は、MIME タイプに関連しています。

ウェブサイトを作成している際に、flv や MP4 形式などのビデオ ファイルはローカルでは正常に再...

...

Linux で Tomcat を実行するいくつかの方法の説明

Linux での Tomcat の起動とシャットダウンLinux システムでは、コマンド操作を使用し...

mysql mycat ミドルウェアのインストールと使用

1. mycatとはエンタープライズアプリケーション開発のための完全にオープンソースの大規模データベ...

MySQL MHA のセットアップと切り替えに関するいくつかのエラー ログの概要

1: masterha_check_repl レプリカ セット エラー レプリケートが構成ファイルで...

Ubuntu 18.04 で中国語入力方法を設定する方法

Ubuntuの最新バージョンでは、ユーザーは中国語入力方法を別途ダウンロードする必要がなくなりました...

解決策 - BASH: /HOME/JAVA/JDK1.8.0_221/BIN/JAVA: 権限が不十分です

1) jdkファイルが保存されているフォルダパスを入力します私はここにいますusr/local/jd...

Vueを使用してタイマー機能を実装する

この記事の例では、タイマー機能を実装するためのVueの具体的なコードを参考までに共有しています。具体...

IE8は優れたエクスペリエンスを提供します: アクティビティ

今日は IE8 ベータ 1 (以下、IE8 と略します) をチラ見しました。IE8 は素晴らしい体験...

MySQLの共有ロックと排他ロックの使用例の分析

この記事では、例を使用して MySQL の共有ロックと排他ロックの使用方法を説明します。ご参考までに...

nginx 503 サービスが一時的に利用できない問題を解決する方法

最近、ウェブサイトを更新すると、503 Service Temporarily Unavailabl...

TypeScript 開発のための 6 つの実用的なヒント

目次1. 開発前にエンティティの種類を決定する2. インターフェースをリクエストするときは、使用する...