3000 ワードを使用して、0 から 1UI までの Postman 自動テストを実現する

「この記事を読むのにかかる時間は約 4 分です。Postman
はインターフェイスのテストを行っているのではありませんか? なぜ UI 自動化のテストを行うことができるのでしょうか?

実際、Selenium の動作原理を理解している限り、Postman が UI 自動化テストを実装できる理由も理解できます。

Selenium の基本原理が
コードを実行します. ブラウザーが開始されると、Web ドライバーは Web ドライバーのリモート サーバー (リモート サーバー) としてブラウザーを特定のポートにバインドし、クライアント (クライアント、つまりテスト スクリプト、 Python または Java コードを使用できます) は、CommandExecutor を使用して sessionId を作成し、リモート サーバーに http 要求を送信します。リモート サーバーが http 要求を受信した後、webdriver を呼び出して操作を完了し、http 応答を返します。結果をクライアントに。

したがって、本質的には http リクエストを呼び出すプロセスなので、なぜ Postman を使用して UI 自動化テストを実装できるのかが理解できます。

Postman が UI 自動化テストを実装する
以上で、Selenium の基本原理が実際には http リクエストを呼び出すプロセスであることがわかりました。次に、インターフェイスを呼び出す場合は、リクエスト メソッド、リクエスト アドレス、リクエスト パラメータ、リクエストなどのインターフェイス情報を知る必要があります。フォーマットなど

ソースコードを解析することで、これらのインターフェース情報を取得できます。

chromedriver.exe を実行します

セレンスクリプト:

  1. from selenium import webdriver

  2. driver = webdriver.Chrome()

上記のコードを実行すると、プログラムは Chrome ブラウザーを開きます。(前提条件: Chrome ドライバーと対応するバージョンが正しく構成されている)

 

では、Selenium はこのプロセスをどのように実装するのでしょうか?

ソースコード分析:

D:\Python3\Lib\site-packages\selenium\webdriver\chrome\webdriver.py

主に chromedriver.exe ブラウザ ドライバを起動するための cmd コマンドを実行していることがわかります.毎回スクリプトを実行する前に、プログラムは自動的にブラウザ ドライバを起動します.

コード スクリプトをスキップしたため、ブラウザー ドライバーを手動で開始する必要があります。

アドレスとポート番号:127.0.0.1:9515

新しいブラウザ セッション

D:\Python3\Lib\site-packages\selenium\webdriver\remote\webdriver.py

引き続きソース コードを表示します。ここに重要なコード行があります。

 

start_session() メソッドはhttp://127.0.0.1:9515/sessionポスト リクエストをアドレスに送信します。パラメータは JSON 形式です。次に、特定の応答メッセージをプログラムに返します。主に新しい sessionId を作成します。

インターフェース情報:

url: /session
method: POST
content_type: application/json

リクエスト パラメータ:

{
    "capabilities": {
        "browserName": "chrome"
    }
}

 

呼び出しインターフェイス:

目的のサイトにアクセス

セレンスクリプト:

driver.get("https://www.baidu.com")

 

上記のコードを実行して、対象の Web サイトにアクセスします。

ソースコード分析:

D:\Python3\Lib\site-packages\selenium\webdriver\remote\remote_connection.py

RemoteConnection クラスでは、すべての Selenium 操作に必要なインターフェイス アドレスが定義されています (これらのインターフェイス アドレスはすべてブラウザー ドライバーにカプセル化されています)。

アドレスCommand.GET: ("POST", "/session/$sessionId/url")は、Web サイトにアクセスするための URL です。

次に、_request() メソッドが主に execute() メソッドを介して呼び出され、対応する操作要求アドレスが urllib3 標準ライブラリを介してサーバーに送信され、ブラウザのさまざまな操作が実現されることがわかります。

ブラウザーを開き、ブラウザーを操作してさまざまなアクションを実装することは、前の手順で新しく作成されたブラウザー セッションによって返された sessionId によって関連付けられます。同じブラウザで操作できるように、後続の操作用のさまざまなインターフェイス アドレスに $sessionId があることもわかります。

 

インターフェース情報:

url: /session/$sessionId/url

method: POST

content_type: application/json

リクエスト パラメータ:

 

{
    "url": "目标网站地址"
}

 

ウィンドウを最大化

セレンスクリプト:

driver.maximize_window()

ソースコード分析:

インターフェース情報:

url: /session/$sessionId/window/maximize
method: POST
content_type: application/json

 

呼び出しインターフェイス:

要素の配置

セレンスクリプト: 

 

driver.find_element(By.XPATH, "//input[@id='kw']")

 

ソースコード分析:

インターフェース情報:

url: /session/$sessionId/element
method: POST
content_type: application/json


リクエスト パラメータ:

{
    "using": "xpath", // 定位方式
    "value": "//input[@id='kw']" // 值
}


インターフェイス呼び出し:

テキストを入力

セレンスクリプト:

driver.find_element(By.XPATH, '//input[@type="text"]').send_keys("测试蔡坨坨")

ソースコード分析:

 

インターフェース情報:

  1. url: /session/$sessionId/element/$id/value
    
    method: POST
    
    content_type: application/json

リクエスト パラメータ:

  1. {
    
        "text": "测试蔡坨坨"
    
    }

インターフェイス呼び出し:

 

クリック要素

セレンスクリプト:

driver.find_element(By.XPATH, "//input[@id='su']").click()

ソースコード分析:

インターフェース情報:

  1. url: /session/$sessionId/element/$id/click
    
    method: POST
    
    content_type: application/json

インターフェイス呼び出し:

 

ブラウザを閉じる

セレンスクリプト:

driver.quit() 

 

ソースコード分析:

インターフェース情報:

url: /session/$sessionId
method: DELETE
content_type: application/json

 

インターフェイス呼び出し:

最後に, 私の記事を注意深く読んでくれたすべての人に感謝したいと思います. 相互主義は常に必要です. それは非常に価値のあるものではありませんが, 必要に応じて取り除くことができます:

これらの資料は、[ソフトウェア テスト] の友人にとって最も包括的で完全な準備倉庫である必要があります. この倉庫はまた、最も困難な旅を通して何万人ものテスト エンジニアに同行してきました.パートナーは下の​​小さなカードをクリックできます.受け取る 

 

おすすめ

転載: blog.csdn.net/kk_lzvvkpj/article/details/130093235