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 の列から行への変換のヒント (共有)

推薦する

Java は Apache.POI を使用して HSSFWorkbook を Excel にエクスポートします

Apache.POI の HSSFWorkbook を使用して Excel にエクスポートします。具...

html リンク タグ タイトル属性 改行 マウス ホバー プロンプト コンテンツ 改行効果

オブジェクト上にマウスを移動したときにコンテンツ(タイトル属性の内容)を折り返す方法、HTML タイ...

MySQLデータベース入門:マルチインスタンス構成方法の詳しい説明

目次1. マルチインスタンスとは2. 複数インスタンスのインストールの準備3. MYSQLの複数イン...

Tomcatの起動が遅い問題を素早く解決、超簡単

今日、私はクラスメートが問題を解決するのを手伝いました - Tomcat の起動が非常に遅く、約 5...

Bootstrap FileInputは画像アップロード機能を実装します

この記事の例では、Bootstrap FileInputの具体的なコードを共有して、画像アップロード...

MySQLで置換関数を実装するためのいくつかの実用的なシナリオ

REPLACE構文REPLACE(String,from_str,to_str)つまり、String...

MybatisはSQLクエリのインターセプションと変更の詳細を実装します

序文インターセプターの機能の 1 つは、特定のメソッドの呼び出しをインターセプトできることです。イン...

MySQL ルートパスワードを変更する 4 つの方法 (要約)

方法1: SET PASSWORDコマンドを使用するまずMySQLにログインします。フォーマット: ...

仮想マシンの複製に関するVirtual Boxチュートリアル図

VMに慣れた後、BOXに切り替えるのは少し異なります。たとえば、コピーネットワークカードを2枚使って...

Vue3はフロントエンドのログを出力するためにaxiosインターセプターを使用する

目次1. はじめに2. axiosインターセプターを使用してフロントエンドログを出力する1. はじめ...

Dockerを使用してクローンリポジトリを使用してGitイメージを構築する

概要私は 1 年以上 Docker を使用しています。最近、サービスをすばやくオーケストレーションし...

Linux で rc.local ファイルがない場合の完璧なソリューション

新しい Linux ディストリビューションには rc.local ファイルがなくなりました。サービス...

EChartsマウスイベント処理方法の詳細な説明

イベントとは、クリック、マウスオーバー、ページの読み込み後にトリガーされる読み込みイベントなど、ユー...

CSS でフローティングにより親要素の高さが崩れる問題を解決するいくつかの方法

1. ドキュメントフローとフローティング1. ドキュメントフローとは何ですか? HTML では、ドキ...

Ubuntu で中国語入力方法が使えない場合の解決策

Ubuntu では中国語入力方法の解決策はありません。仮想マシンや Ubuntu システムをインスト...