ホームページ >バックエンド開発 >PHPチュートリアル >PHP でのインターフェイスレス テストに PhantomJS を使用する方法

PHP でのインターフェイスレス テストに PhantomJS を使用する方法

王林
王林オリジナル
2023-06-27 09:27:002046ブラウズ

現代の Web 開発環境では、インターフェイスレス テストはユーザーの操作をシミュレートし、UI の正しさを検証できるため、不可欠なステップです。 PhantomJS は、ヘッドレス環境での自動テスト用の人気のあるツールです。この記事では、PHP で PhantomJS を使用してインターフェイスレス テストを行う方法を紹介します。

1. PhantomJS のインストール

まず、PhantomJS をマシンにインストールする必要があります (公式 Web サイトからダウンロードしてインストールできます)。 Linux でのインストール手順は次のとおりです。

  1. PhantomJS バイナリ ファイルのダウンロード
    $ sudo apt-get install wget unzip
    $ wget https://github.com/Medium/phantomjs/ releases /download/v2.1.1/phantomjs-2.1.1-linux-x86_64.tar.bz2
  2. バイナリ ファイルを解凍します
    $ tar xvf phantomjs-2.1.1-linux-x86_64.tar.bz2
  3. PhantomJS 実行可能ファイルをシステム パスに追加します
    $ sudo mv phantomjs-2.1.1-linux-x86_64/bin/phantomjs /usr/local/bin/

これで、PhantomJS がインストールされ、コマンド ラインで「phantomjs」コマンドを実行して確認できます。

2. 自動テストのために PHP で PhantomJS を使用する

PhantomJS をインストールした後の次のステップは、自動テストのためにそれを PHP に統合することです。以下は、PhantomJS を使用して Google.com を開いて「PhantomJS」を検索する簡単な PHP スクリプトです。

<?php
  $url = 'https://www.google.com/';
  $searchText = 'PhantomJS';

  // 启动PhantomJS服务
  $phantomjs = new JonnyWPhantomJsClient();
  $phantomjs->getEngine()->setPath('/usr/local/bin/phantomjs');
  $request = $phantomjs->getMessageFactory()->createRequest($url, 'GET');
  $response = $phantomjs->getMessageFactory()->createResponse();

  // 执行搜索
  $request->setDelay(5); // 等待5秒钟
  $request->setViewportSize(1024, 768); // 设置视口大小
  $request->setRequestData(array('q' => $searchText), JonnyWPhantomJsHttpRequestInterface::METHOD_POST);
  $phantomjs->send($request, $response);

  // 输出响应
  echo $response->getContent();

上記のコードは、PhantomJS を制御して応答を取得するためのシンプルなインターフェイスを提供する PHP ライブラリ「jonnyw/phantomjs」を使用しています。まず、PhantomJS サービスを開始し、その実行パスを設定する必要があります。次に、リクエスト オブジェクトを作成し、アクセスするページの URL と検索テキストを指定します。次に、ページ サイズと遅延、およびリクエスト タイプ (POST または GET) を設定できます。最後に、send() メソッドを使用してリクエストを送信し、応答を保存します。応答は $response オブジェクトで取得できます。

3. 高度な使用法

上記の基本的な使用法に加えて、PhantomJS には探索可能な多くの高度な使用法もあります。例をいくつか示します。

  1. ページのスクリーンショットを取得します。
    PhantomJS を使用してスクリーンショットを簡単に取得します。サンプル コードは次のとおりです。
<?php
  $url = 'https://www.google.com/';
  $searchText = 'PhantomJS';

  // 启动PhantomJS服务
  $phantomjs = new JonnyWPhantomJsClient();
  $phantomjs->getEngine()->setPath('/usr/local/bin/phantomjs');
  $request = $phantomjs->getMessageFactory()->createRequest($url, 'GET');

  // 设置截图配置
  $settings = array(
      'quality' => 90,
      'format' => 'png',
      'viewportSize' => array('width' => 1024, 'height' => 768),
      'clipRect' => array('top' => 0, 'left' => 0, 'width' => 1024, 'height' => 768),
      'paperSize' => array('format' => 'A4', 'orientation' => 'portrait', 'margin' => '1cm'),
  );

  // 创建一个屏幕截图
  $screenshot = $phantomjs->captureScreenshot($request, $settings);

  // 保存截图到文件
  file_put_contents('screenshot.png', $screenshot->getBinary());
  1. シミュレーション ユーザー操作
    PhantomJS は、ユーザーのクリック、スクロール、入力などの操作をシミュレートできます。サンプル コードは次のとおりです:
<?php
  $url = 'https://www.google.com/';
  $searchText = 'PhantomJS';

  // 启动PhantomJS服务
  $phantomjs = new JonnyWPhantomJsClient();
  $phantomjs->getEngine()->setPath('/usr/local/bin/phantomjs');
  $request = $phantomjs->getMessageFactory()->createRequest($url, 'GET');
  $response = $phantomjs->getMessageFactory()->createResponse();

  // 执行搜索
  $request->setDelay(5); // 等待5秒钟
  $request->setViewportSize(1024, 768); // 设置视口大小
  $request->setRequestData(array('q' => $searchText), JonnyWPhantomJsHttpRequestInterface::METHOD_POST);

  // 模拟点击
  $request->setScript('document.getElementsByName("btnG")[0].click();');

  // 模拟滚动
  $request->setScript('window.scrollTo(0, document.body.scrollHeight);');

  // 模拟输入
  $request->setScript('document.getElementsByName("q")[0].setAttribute("value", "PhantomJS");');

  $phantomjs->send($request, $response);

  // 输出响应
  echo $response->getContent();

4. 結論

PhantomJS は強力なインターフェースレスです。テスト ツール 。開発者が Web 開発プロセス中にテストを自動化するのに役立ちます。 PHP で PhantomJS を使用すると、インターフェイスのないテスト スクリプトを簡単に作成し、ユーザー アクションをシミュレートできます。開発者にとってもテスターに​​とっても、テストの効率は大幅に向上します。

以上がPHP でのインターフェイスレス テストに PhantomJS を使用する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。