自動ヘルスレポートを実現するDocker+Selenium方式

自動ヘルスレポートを実現するDocker+Selenium方式

この記事では、ある大学の健康報告システムを例に、Web 側の自動化操作を完成させます。使用したテクノロジー スタックは次のとおりです。
Docker \ Selenium \ Python \ yagmail \ ssh など

基本的な考え方:
1. ローカルでコードを書いてテストする
2. 新しいDockerコンテナを作成し、環境を構成する
3. コードをサーバーにアップロードし、Dockerコンテナにコピーします。
4. コードを解凍してデバッグし、コードに問題がないことを確認した後、コードを削除します。
6. コンテナから出て、コンテナを鏡にする
7. イメージを使ってコンテナをインスタンス化し、コードをマウントする

1. ローカルでコードを書いてデバッグする

まず、操作する必要があるターゲット Web を見てみましょう。
ログインページ:

ログインページ

フォームページ:

ここに画像の説明を挿入

操作は非常に簡単です。ログインして、必要なオプションをチェックし、「送信」をクリックするだけです。

添付のソースコード:

メインファイル:

メインファイル

yagmail経由でメールを送信:

yagmail ファイル

注意:ここではパスワードではなく、メールアドレスの[認証コード]を使用します。 QQ メールボックスは、[設定] => [アカウント] で操作できます。

ここに画像の説明を挿入

セレン自動化:

セレン自動化

ここでは Xpath ポジショニングが使用され、ブラウザはそれを直接キャプチャできるため、非常に便利です。

ここに画像の説明を挿入

最後に quit と stop を追加することを忘れないでください。そうしないと、プロセスが積み重なって閉じることができなくなり、クラッシュが発生します。問題なくローカルで実行したら、次の手順に進むことができます。

2. Dockerコンテナ環境を構成する

環境設定は次の手順で行います
1. Pythonイメージを取得する
2. Pythonイメージを使用して新しいコンテナを作成する
3. 操作に必要なサードパーティライブラリをインストールする
4. ChromeブラウザとChromeDriverをインストールする
5. デバッグ用のテストファイルをアップロードする

Python イメージをプルする<br /> これを行うには、Docker が正しくインストールされていることを確認し、次のコマンドを使用してイメージをプルする必要があります。

docker イメージ プル python

ローカルにプルされたかどうかを確認するには、次のコマンドを使用します。

dockerイメージls

Pythonイメージを使用して新しいコンテナを作成する

次のコマンドを使用して新しいコンテナを作成し、そのコンテナに入ります。

docker run -it python /bin/bash

操作に必要なサードパーティ ライブラリをインストールします<br /> ライブラリは、次のような簡単な pip コマンドでインストールできます。

pip でセレンをインストールする
pip でyagmailをインストール
pip pytz をインストール

ここに画像の説明を挿入

インストール後はデバッグして確認することができます。ここでは詳細には触れません。

ChromeブラウザとChromedriverをインストールする
Ubuntu システムの場合は次のコマンドが使用でき、他のシステムの場合は Baidu が使用できます。

# ダウンロード wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb
# dpkg -i google-chrome-stable_current_amd64.deb をインストールします

chromedriver をインストールする前に、chrome のバージョン番号を確認し、バージョン番号に応じて対応するドライバーをダウンロードする必要があります。

# Chromeのバージョンを確認する google-chrome --version

chromedriver に関しては、ローカルにダウンロードして解凍し、ssh を使用してサーバーに転送しました。
ダウンロードアドレス: http://chromedriver.storage.googleapis.com/index.html
ダウンロードして解凍したら、ssh コマンドを使用してアップロードします。

ドライバーのアドレス/chromedriver root@server IP:server directory を scp します

次に、それをホストからコンテナにコピーします。

docker cp chromwdriver コンテナ名: コンテナディレクトリ

コードもこのようにアップロードされ、後続の関連操作では、簡単なデバッグのために python コマンドを繰り返し入力する必要がなくなります。

ここに画像の説明を挿入

ここに画像の説明を挿入

確認のためにテスト ファイルをアップロードします。

テストファイル

メールが正しく出力され送信できる場合は、次のステップに進むことができます。

ここに画像の説明を挿入

コンテナを画像にする

テスト ファイルを削除した後、exit と入力してコンテナーを終了し、次のコマンドを使用してイメージを作成します。

sudo docker コミット eafd9111ada6 docker/sele_heath

コミット後の値はコンテナ ID またはコンテナ名です。不明な場合は、docker ps -a と入力して表示できます。
docker/sele_heathは新しいイメージの名前です

完了したら、次のコマンドを入力して、新しく作成されたイメージを表示できます。

docker イメージ docker/sele_heath

イメージを使用してコンテナをインスタンス化し、コードをマウントする

イメージがビルドされたら、最後のステップに進むことができます。コマンドは次のとおりです。

docker run -d -v /home/admin/heath2:/usr/src -w /usr/src docker/sele_heath python main.py

コマンド分析:
-d: プロセスをブロックする
-v: アドレスマッピング
/home/admin/heath2: コードファイルのディレクトリ
/usr/src: コンテナに対応するディレクトリにマップされます
-w /usr/src: コンテナ内のファイルを実行するためのディレクトリ。通常はマップされたディレクトリと同じです。
docker/sele_heath: イメージ名
python main.py: pythonを使用してmain.pyファイルを実行します

コンテナが正常に実行されているかどうかを確認するには、次のコマンドを入力します。

ドッカーps 

ここに画像の説明を挿入

この時点で、すべての操作が完了しました。あとは起きて携帯電話を取り出してメールを確認するだけです

ここに画像の説明を挿入

Docker+Selenium で自動ヘルスレポートを実現する方法についての記事はこれで終わりです。Docker Selenium 自動化に関する関連コンテンツについては、123WORDPRESS.COM で以前の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

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

<<:  Vue コンポーネントの構成構造とコンポーネント登録の詳細

>>:  一般的なメールボックスで正常に表示できる HTML メールを作成するためのヒント

推薦する

MySQL における Datetime と Timestamp の使用の概要

目次1. MySQL で現在の時刻を表現するにはどうすればよいでしょうか? 2. TIMESTAMP...

DockerでEurekaを設定する方法

ユーレカ: 1. JDKイメージを構築するEurekaコンテナを起動するjdkフォルダと必要なファイ...

MySQLのファジークエリのような遅い速度を解決する方法

質問: インデックスは作成されているのに、Like ファジー クエリがまだ遅いのはなぜですか?インデ...

Linux で MySQL 8.0 バージョンをアンインストールする方法

1. MySQLをシャットダウンする [root@localhost /]# サービスmysqldを...

Windows で Mysql を起動したときに 1067 が表示される場合の解決策

数日前に仕事を始めて、Mysql をインストールしたところ、開くことができました。今日、会社に行った...

Vue で Axios カプセル化を使用するための完全なチュートリアル

序文現在、プロジェクトでは、Axios ライブラリが HTTP インターフェース リクエストによく使...

将来最も成功する企業はテクノロジー企業でしょうか、それともデザイン企業でしょうか?

ムーアの法則はもはや適用されない2004年にフレックストロニクスがフロッグデザインを買収したのを皮切...

サブクエリ最適化における MySQL 選択の実装

以下のデモはMySQLバージョン5.7.27に基づいています。 1. MySQLサブクエリ最適化戦略...

初心者向けのMySQLデータベースとテーブルDDLの作成と操作の学習

目次1. データベースを操作する1.1 データベースを作成する1.2 データベースをクエリする1.3...

HTML相対パスの親ディレクトリと子ディレクトリの書き方

親ディレクトリを指定する方法../ はソース ファイルの親ディレクトリを表し、../../ はソース...

初心者向け入門講座⑧:記事サイトを簡単に作る

前回の投稿では、Web ページの作成方法について説明しました。Web サイトは多くの Web ページ...

WindowsでMysql5.7.17のインストールと起動に失敗する問題を解決する

マシンに初めて MySQL をインストールします。オペレーティングシステムはwin7ですmysqlの...

Vueはキャンバスの手書き入力を使用して中国語を認識します

効果画像: 序文:最近、屋外の大画面プロジェクトに取り組んでいました。システムの入力方法は使いにくか...

ウェブデザインのためのオンライン開発ツール10選の紹介

1. オンラインテキストジェネレーターBlindTextGenerator: デザイナーにとって、こ...

Centos7.5 は mysql5.7.24 バイナリ パッケージの展開をインストールします

1. 環境整備:オペレーティング システム: CentOS Linux リリース 7.5.1804 ...