Heim  >  Artikel  >  Backend-Entwicklung  >  So verwenden Sie PhantomJS für schnittstellenlose Tests in PHP

So verwenden Sie PhantomJS für schnittstellenlose Tests in PHP

王林
王林Original
2023-06-27 09:27:001807Durchsuche

In der modernen Webentwicklungsumgebung ist das schnittstellenlose Testen ein unverzichtbarer Schritt, da es Benutzervorgänge simulieren und die Korrektheit der Benutzeroberfläche überprüfen kann. PhantomJS ist ein beliebtes Tool für automatisierte Tests in einer Headless-Umgebung. In diesem Artikel wird erläutert, wie Sie PhantomJS in PHP für schnittstellenlose Tests verwenden.

1. PhantomJS installieren

Zunächst müssen Sie PhantomJS auf dem Computer installieren. Sie können es von der offiziellen Website herunterladen und installieren. Im Folgenden sind die Installationsschritte unter Linux aufgeführt:

  1. Laden Sie die PhantomJS-Binärdatei herunter
    $ 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. Entpacken Sie die Binärdatei
    $ tar .1-linux-x86_64/bin/phantomjs /usr/local/bin/

  3. Jetzt wurde PhantomJS installiert und kann durch Ausführen des Befehls „phantomjs“ in der Befehlszeile überprüft werden.
2. Verwenden Sie PhantomJS in PHP für automatisierte Tests.

Nach der Installation von PhantomJS besteht der nächste Schritt darin, es für automatisierte Tests in PHP zu integrieren. Unten finden Sie ein einfaches PHP-Skript, das PhantomJS verwendet, um Google.com zu öffnen und nach „PhantomJS“ zu suchen.

<?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();

Der obige Code verwendet eine PHP-Bibliothek „jonnyw/phantomjs“, die eine einfache Schnittstelle zur Steuerung von PhantomJS und zum Erhalten von Antworten bietet. Zuerst müssen Sie den PhantomJS-Dienst starten und seinen Ausführungspfad festlegen. Erstellen Sie dann ein Anforderungsobjekt und geben Sie die Seiten-URL, auf die zugegriffen werden soll, und den Suchtext an. Als nächstes können Sie die Seitengröße und Verzögerung sowie den Anforderungstyp (POST oder GET) festlegen. Verwenden Sie abschließend die Methode send(), um die Anfrage zu senden und die Antwort zu speichern. Die Antwort kann im $response-Objekt abgerufen werden.

3. Erweiterte Verwendung

Zusätzlich zur oben genannten grundlegenden Verwendung verfügt PhantomJS auch über viele erweiterte Verwendungsmöglichkeiten, die erkundet werden können. Hier sind einige Beispiele:

Erstellen Sie Screenshots der Seite.

Verwenden Sie PhantomJS, um ganz einfach Screenshots zu erstellen. Der Beispielcode lautet wie folgt:
  1. <?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());

  2. Benutzervorgänge simulieren.
PhantomJS kann Benutzervorgänge wie Klicken, Scrollen und Tippen simulieren , Der Beispielcode lautet wie folgt:
  1. <?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. Fazit
PhantomJS ist ein leistungsstarkes schnittstellenloses Testtool, das Entwicklern dabei helfen kann, Tests während des Webentwicklungsprozesses zu automatisieren. Durch die Verwendung von PhantomJS mit PHP können Sie ganz einfach schnittstellenlose Testskripte schreiben und Benutzeraktionen simulieren. Ob für Entwickler oder Tester, die Testeffizienz kann erheblich verbessert werden.

Das obige ist der detaillierte Inhalt vonSo verwenden Sie PhantomJS für schnittstellenlose Tests in PHP. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn