自動テスト: Selenium の原理とインストールのチュートリアル

目次

1. クライアントとドライバー(環境)のインストール

1. クライアントライブラリをインストールする

2. ブラウザとドライバーをインストールする

2. 簡単な例(Python自動化開発)

ブラウザドライバのパスを省略する

3. よくある質問

chromedriver ログを閉じる

ウイルス対策のリセット設定を表示するブラウザのホームページ

知識を広げる


Selenium は、一連の Web サイト向けのプログラム自動運用ソリューションです。

これにより、自動化されたプログラムを作成し、人間のようにブラウザーの Web インターフェイスを操作できるようになります。たとえば、インターフェースボタンをクリックしたり、テキストボックスにテキストを入力したりするなどの操作が可能です。

Web インターフェースからも情報を取得できます。例えば、電車やバスのチケット情報、求人サイトの求人情報、金融サイトの株価情報などを取得し、プログラムで分析・加工します。

Seleniumの自動化原理はこんな感じ

上の図からわかるように:

私たちが作成する自動化プログラムでは、クライアント ライブラリを使用する必要があります。

プログラムの自動化リクエストは、このライブラリのプログラミング インターフェイスを通じてブラウザに送信されます。

たとえば、ユーザーがインターフェイス ボタンをクリックすることをシミュレートしたい場合は、クライアント ライブラリの対応する関数を自動化プログラムで呼び出す必要があり、要素をクリックするリクエストが下位のブラウザ ドライバーに送信さます次に、ブラウザ ドライバはリクエストをブラウザに転送します。

この自動プログラムがブラウザ ドライバーに送信するリクエストは HTTP リクエストです。

クライアント ライブラリはどこから来たのですか? これは Selenium 組織によって提供されます。

Selenium 組織は、さまざまなプログラミング言語の開発者が使用できるように、Java、Python、js、Ruby などのさまざまなプログラミング言語で Selenium クライアント ライブラリを提供しています。

クライアント ライブラリをインストールし、これらのライブラリを呼び出して、自動リクエストをブラウザに送信するだけです。

ブラウザ ドライバもブラウザの製造元が提供する独立したプログラムであり、ブラウザごとに必要なブラウザ ドライバも異なります。たとえば、Chrome ブラウザと Firefox ブラウザには異なるドライバがあります。

ブラウザ ドライバーは、自動化プログラムによって送信されたインターフェイス操作リクエストを受信すると、そのリクエストをブラウザーに転送し、ブラウザーに対応する自動化操作を実行させます。

ブラウザが操作を完了すると、自動化結果がブラウザ ドライバに返され、ブラウザ ドライバは HTTP 応答メッセージを通じて自動化プログラムのクライアント ライブラリにそれを返します。

応答を受信した後、自動化プログラムのクライアント ライブラリは結果を数据对象コードに変換して返します。

私たちのプログラムは、この自動化された操作の結果を知ることができます。

もう一度要約してみましょう。Selenium の自動化プロセスは次のとおりです。

  1. 自動プログラムは Selenium クライアント ライブラリ関数を呼び出します (ボタン要素のクリックなど)

  2. クライアント ライブラリは Selenium コマンドをブラウザ ドライバーに送信します。

  3. ブラウザ ドライバはコマンドを受信すると、ブラウザを駆動してコマンドを実行します。

  4. ブラウザがコマンドを実行する

  5. ブラウザドライバーはコマンドの実行結果を取得し、それを自動化プログラムに返します。

  6. 自動化されたプログラムが返された結果を処理します

1. クライアントとドライバー(環境)のインストール

Selenium 環境のインストールでは、主に客户端库との 2 つをインストールします浏览器 驱动

1. クライアントライブラリをインストールする

プログラミング言語が異なれば、異なる Selenium クライアント ライブラリが選択されます。

Python 言語に対応した Selenium クライアント ライブラリのインストールは非常に簡単で、pip コマンドを使用するだけです。

コマンドラインプログラムを開き、次のコマンドを実行します。

pip install selenium

インストールできない場合は、ネットワークの問題である可能性があります。国内の Douban ソースを使用するように指定できます

pip install selenium -i https://pypi.douban.com/simple/

2. ブラウザとドライバーをインストールする

ブラウザドライバはブラウザに対応します。ブラウザが異なれば、異なるブラウザ ドライバを選択する必要があります。

現在の主流のブラウザの中で、Google Chrome ブラウザは Selenium 自動化に対するより成熟したサポートを備えています。

Chrome ブラウザを使用することをお勧めします。

ここをクリックして Google Chrome をダウンロードしてインストールできます

Chrome ブラウザがインストールされていることを確認したら、以下のリンクを開いて Chrome ブラウザのドライバ ダウンロード ページにアクセスしてください。

Chromeブラウザドライバーのダウンロードアドレス

なお、ブラウザドライバはブラウザのバージョンと一致している必要があり、下図の赤丸内のバージョン番号がブラウザのバージョン番号に相当します。

たとえば、現在の Chrome ブラウザのバージョンが 98 の場合、通常は 98 で始まるディレクトリにドライバーをダウンロードする必要があります。

注: ドライバーとブラウザーのバージョン番号は近ければ近いほど良いですが、98 と 97 など、多少の違いがあっても通常は問題ありません。

Chrome ブラウザのバージョンを確認します。

 対応するバージョンを見つける

ディレクトリを開くと、その中に Linux、Mac、および Windows プラットフォームに対応する 3 つの zip パッケージがあります。

Windows プラットフォームのコンピューターの場合は、chromedriver_win32.zip をダウンロードします。

これは zip パッケージです。ダウンロード後、その中のプログラム ファイル chromedriver.exe を特定のディレクトリに解凍します。このディレクトリのパスには中国語の名前やスペースが含まれていないことが望ましいことに注意してください。

たとえば、d:\tools以下のディレクトリに解凍します。

これは、Chrome ブラウザのドライブ パスが次のとおりであることを確認するためです。D:\tools\Chrome_plugins_driver\chrome_driver\chromedriver.exe

一部の友人は上記の URL を開けない可能性があります。次の Baidu ネットワーク ディスクにダウンロードできる新しいドライバーが提供されています。

リンク: https://pan.baidu.com/s/1qMzJ1n-KknqaHHd5rhDfEA
抽出コード: 1111

Microsoft Edge ブラウザを選択した場合は、ここをクリックしてドライバーをダウンロードしてください

以上が比較的シンプルなSeleniumをベースとしたWebオートメーション環境の構築です。


2. 簡単な例(Python自動化開発)

ここをクリックしてビデオ説明を視聴し、次の内容を学習してください

次のコードは、Chrome ブラウザを自動的に開き、Baidu Web サイトを自動的に開きます。実行して確認できます。

from selenium import webdriver
from selenium.webdriver.chrome.service import Service

# 创建 WebDriver 对象,指明使用chrome浏览器驱动
wd = webdriver.Chrome(service=Service(r'd:\tools\chromedriver.exe'))

# 调用WebDriver 对象的get方法 可以让浏览器打开指定网址
wd.get('https://www.baidu.com')

その中で、次のコード行はブラウザ ドライバを実行し、Chrome ブラウザを実行します。

wd = webdriver.Chrome(service=Service(r'd:\tools\chromedriver.exe'))

等号の右側で返されるのは WebDriver 型のオブジェクトであり、これを通じて URL を開いたり、インターフェイス要素を選択したりするなど、ブラウザーを操作できることに注意してください。


次のコード行は、WebDriver の get メソッドを使用して、URL Baidu を開きます。

wd.get('https://www.baidu.com')

上記のコード行が実行されると、自動化プログラムは Baidu Web サイトのオープンを開始し 请求消息 、それをブラウザ ドライバーを通じて Chrome ブラウザに送信します。

Chome ブラウザはリクエストを受信すると、Baidu Web サイトを開き、ブラウザ ドライバを通じて自動化プログラムに正常に開くように指示します。

オートメーション コードの実行後、ブラウザ ウィンドウを閉じたい場合は、wd.quit() のように、WebDriver オブジェクトの quit メソッドを呼び出すことができます。

ブラウザドライバのパスを省略する

以前、コードで WebDriver オブジェクトを作成したとき、次のようにブラウザー ドライバーのパスを指定する必要がありました。

from selenium.webdriver.chrome.service import Service
wd = webdriver.Chrome(service=Service(r'd:\tools\chromedriver.exe'))

この方法で書くといくつかの問題があります。

1 つは、自動化コードを記述するたびにパスを指定する必要があり、面倒であることです。

次に、コードが他の人によって実行される場合、その人のコンピュータ上でブラウザ ドライバが保存されているパスがあなたのものと異なる可能性があり (たとえば、彼のコンピュータが Apple Mac コンピュータである場合)、スクリプトを変更する必要があります。

最善の方法は何ですか?

所在目录 ブラウザ ドライバを環境変数に 追加できます Path 。コードを記述するときに、次のようにブラウザ ドライバのパスを指定する必要はありません。

wd = webdriver.Chrome()

Selenium は、環境変数 Path で指定されたディレクトリ内で chromedriver.exe という名前のファイルを自動的に検索するためです。

環境変数 Path を追加するには、

ブラウザドライバーのフルパスではありません。たとえば、 D:\tools\Chrome_plugins_driver\chrome_driver\chromedriver.exe

これは、ブラウザ ドライバが配置されているディレクトリです。たとえば、 D:\tools\Chrome_plugins_driver\chrome_driver

環境変数を設定した後は、新しい環境変数を有効にするために IDE (PyCharm など) を再起動することを忘れないでください。

次に、Selenium が Web ページ上の情報をどのように自動的にクリックし、入力し、取得するかについては、次の章で学習します。

3. よくある質問

chromedriver ログを閉じる

デフォルトでは、chromedriver が起動すると、次のように画面に大量のログ情報が出力されます。

DevTools listening on ws://127.0.0.1:19727/devtools/browser/c19306ca-e512-4f5f-b9c7-f13aec506ab7
[21564:14044:0228/160456.334:ERROR:device_event_log_impl.cc(211)] [16:04:56.333] Bluetooth: bluetooth_adapter_winrt.cc:1072 Getting Default Adapter failed.

このように閉じることができます

from selenium import webdriver

# 加上参数,禁止 chromedriver 日志写屏
options = webdriver.ChromeOptions()
options.add_experimental_option(
    'excludeSwitches', ['enable-logging'])

wd = webdriver.Chrome(options=options  # 这里指定 options 参数
)

ウイルス対策のリセット設定を表示するブラウザのホームページ

友人のコンピュータで Selenium が自動化されると、ブラウザに次の表示が開始されます。

これは次のように解決できます。

  • コマンドライン入力 regedit 、レジストリエディタの実行

  • 左側のディレクトリツリーで HKEY_CURRENT_USER\Software\Google\Chrome

  • その下の TriggeredReset サブキーを削除します

  • regeditを閉じる

知識を広げる

ブラウザとドライバの間のインターフェイスは各ブラウザ ベンダーにプライベートなものであり、通常はそれを気にする必要はありません。

詳細を知りたい友人は、 このリンクを参照して、Chrome ブラウザと Chrome の間のインターフェースについて学ぶことができます。

おすすめ

転載: blog.csdn.net/weixin_46474921/article/details/127276077