Selenium 自動テスト フレームワークがどのように機能するかを理解していますか?

目次

1. セレンとは何ですか?

二、Selenium History

3. セレンの原理

4、Selenium の作業プロセスの概要:

5. リモートサーバー側のこれらの機能はどのように実現されていますか?

6.添付ファイル:

1. セレンとは何ですか?

  公式 Web サイトの文: Selenium はブラウザを自動化します。簡単に言えば、Selenium は Web アプリケーションの自動テスト ツールです。Selenium テストは、実際のユーザーがブラウザを操作しているのと同じように、ブラウザ内で直接実行されます。サポートされているブラウザには、IE、Firefox、Safari、Chrome などが含まれます。Selenium は単なるツールや API ではなく、多くのツールで構成されています

 

(上記の翻訳ソフトを使用しているため、正確ではない翻訳もございます。閲覧の際はご自身の判断でお願いいたします)

  • ウェブドライバー

デスクトップ Web またはモバイル Web テスト自動化を開始する場合は、webdriverapi を使用することになります。Webdriver は、ブラウザ ベンダーが提供するブラウザ自動化 API を使用して、ブラウザを制御し、テストを実行します。あたかも実際のユーザーがブラウザを操作しているかのようです。WebDriver は API をコンパイルするためにアプリケーション コードを必要としないため、非侵入的です。したがって、テストするアプリケーションは、ライブにプッシュされたアプリケーションと同じです。

  • IDE

Ide (統合開発環境) は、Selenium テスト ケースの開発に使用するツールです。これは使いやすい Chrome および Firefox の拡張機能であり、多くの場合、テスト ケースを開発する最も効率的な方法です。要素のコンテキストによって定義されたパラメーターを使用して、既存の Selenium コマンドを使用してブラウザーでのユーザー アクションを記録します。これは時間を節約できるだけでなく、Selenium スクリプト構文を学習する優れた方法でもあります。

  • グリッド

Selenium Grid を使用すると、さまざまなプラットフォーム上のさまざまなマシンでテスト ケースを実行できます。テスト ケースのトリガーの制御はローカル側にあり、テスト ケースがトリガーされると、リモート側によって自動的に実行されます。

WebDriver テストを開発した後、複数のブラウザーとオペレーティング システムの組み合わせでテストを実行する必要がある場合があります。ここでグリッドが登場します。

 

二、Selenium History

 2004 年に Selenium Core が誕生しました。Selenium Core は、JavaScript プログラミング言語を使用したブラウザベースのテスト ツールです。ブラウザのセキュリティ サンドボックスで実行されます。設計コンセプトは、テスト対象の製品である Selenium Core とテスト スクリプトを同じサーバーにデプロイして、自動テスト作業を完了することです。

2005 年に Selenium RC が誕生しました (selenium1)。この時点では、Selenium Core が実際には Selenium RC のコアです。Selenium RC を使用すると、テスト対象の製品、Selenium Core、およびテスト スクリプトを異なるサーバーに配布できます。(テスト スクリプトは、HTTP リクエストを指定された URL に送信することのみを考慮し、Selenium 自体は HTTP リクエストのプログラミング言語を考慮する必要はありません)。Selenium RC は 2 つの部分で構成されます。1 つは Selenium RC サーバーで、もう 1 つはテスト スクリプトを作成するためのさまざまなプログラミング言語クライアント ドライバーを提供します。

2007 年に Webdriver が誕生しました。WebDriver の設計コンセプトは、基礎となる特定のテスト ツールからエンドツーエンド テストを分離し、設計パターンであるアダプタ アダプタを使用して目標を達成することです。WebDriver の API 構成は、よりオブジェクト指向になっています。

2008 年に selenium2 が誕生しました。Selenium2 は実際には Selenium rc と webdriver を統合したものです。統合の根本的な理由は、互いの欠点を補うことです。

2009 年に selenium3 が誕生しました。このバージョンでは Selenium rc が削除され、主に Selenium Webdriver と Selenium Grid で構成されています。私たちが毎日使っているのは、実は Selenium Webdriver です。Selenium Grid に関しては、分散自動テスト用のツールです。 

3. セレンの原理

この記事での Selenium は、RC と同じ機能を持ち、元の 1.x バインディングを含む Selenium Webdriver を指します。これには、言語バインディングと個々のブラウザー制御コードの実装が含まれます。これは「WebDriver」と呼ばれることが多く、Selenium 2 と呼ばれることもあります。Selenium 1.0 + WebDriver = Selenium 2.0

  • WebDriver は、Selenium-RC API のいくつかの制限を解決しながら、よりシンプルかつ簡潔なプログラミング インターフェイスで設計されています。
  • WebDriver は Selenium1.0 と比較してコンパクトなオブジェクト指向 API
  • ブラウザをより効率的に駆動し、ファイルのアップロードまたはダウンロード、ポップアップやダイアログなどの機能のテスト範囲に影響を与えた Selenium 1.x の制限を克服します。

自動テストに Selenium を使用する場合、selenium-server-standalone-2.46.0.jar、selenium-java-2.47.1.jar などの対応する jar パッケージを導入する必要があります。3 以降のバージョンは異なる場合があります。サーバーのような jar パッケージが表示されます。この jar パッケージは Selenium サービスです。サーバー側はリモート サーバーとして任意のブラウザーにすることができます。責任はクライアントのリクエストを処理し、対応する操作を行うことです。クライアントは実行するスクリプトです。 seの具体的な内容はリクエストの内容によって異なりますが、Firefoxを例にすると下図のようになります。

 

4、Selenium の作業プロセスの概要:

selenium client(Java等语言编写的自动化测试脚本)初始化一个service服务,通过Webdriver启动浏览器驱动程序
通过RemoteWebDriver向浏览器驱动程序发送HTTP请求,浏览器驱动程序解析请求,打开浏览器,并获得sessionid,如果再次对浏览器操作需携带此id
打开浏览器,绑定特定的端口,把启动后的浏览器作为webdriver的remote server
打开浏览器后,所有的selenium的操作(访问地址,查找元素等)均通过RemoteConnection链接到remote server,然后使用execute方法调用_request方法通过urlib3向remote server发送请求
浏览器通过请求的内容执行对应动作
浏览器再把执行的动作结果通过浏览器驱动程序返回给测试脚本

5. リモートサーバー側のこれらの機能はどのように実現されていますか?

    ブラウザは Webdriver の統合インターフェイスを実装しており、クライアントは統合された RESTful インターフェイスを通じてブラウザの自動操作を実行できます。

  現在、webdriver は ie、chrome、firefox などの主流ブラウザをサポートしていますが、その主な理由は、これらのブラウザが webdriver で合意されたさまざまなインターフェイスを実装しているためです。

ブラウザを開く栗を例に挙げます。

package com.Demo;
 
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.firefox.FirefoxDriver;
 
public class ExampleForFirefox {
    public static void main(String[] args) {
 
        System.setProperty("webdriver.firefox.bin", "D:\\Program Files\\Mozilla Firefox 24\\firefox.exe");
        WebDriver driver = new FirefoxDriver();
        System.out.println("https://www.cnblogs.com/mrjade/");
        driver.get("https://www.cnblogs.com/mrjade/");
    
    }
}

おすすめ

転載: blog.csdn.net/lzz718719/article/details/131831958