Rumah >pembangunan bahagian belakang >tutorial php >Cara menggunakan PhantomJS untuk ujian tanpa antara muka dalam PHP

Cara menggunakan PhantomJS untuk ujian tanpa antara muka dalam PHP

王林
王林asal
2023-06-27 09:27:002042semak imbas

Dalam persekitaran pembangunan web moden, ujian tanpa antara muka merupakan langkah yang amat diperlukan kerana ia boleh mensimulasikan operasi pengguna dan mengesahkan ketepatan UI. PhantomJS ialah alat popular untuk ujian automatik dalam persekitaran tanpa kepala. Artikel ini akan memperkenalkan cara menggunakan PhantomJS dalam PHP untuk ujian tanpa antara muka.

1. Pasang PhantomJS

Pertama sekali, anda perlu memasang PhantomJS pada mesin Anda boleh memuat turun dan memasangnya dari laman web rasmi. Berikut ialah langkah pemasangan di bawah Linux:

  1. Muat turun binari 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. Nyahzip perduaan
    $ tar xvf phantomjs-2.1.1-linux-x86_64.tar.bz2
  3. Tambahkan laluan sistem PhantomJS sudov2🜜 yang boleh laku🜜2. .1-linux-x86_64/bin/phantomjs /usr/local/bin/
Kini, PhantomJS telah dipasang dan boleh disahkan dengan menjalankan arahan "phantomjs" pada baris arahan.

2. Gunakan PhantomJS dalam PHP untuk ujian automatik

Selepas memasang PhantomJS, langkah seterusnya ialah menyepadukannya ke dalam PHP untuk ujian automatik. Di bawah ialah skrip PHP mudah yang menggunakan PhantomJS untuk membuka Google.com dan mencari "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);
  $phantomjs->send($request, $response);

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

Kod di atas menggunakan perpustakaan PHP "jonnyw/phantomjs", yang menyediakan antara muka mudah untuk mengawal PhantomJS dan mendapatkan respons. Pertama, anda perlu memulakan perkhidmatan PhantomJS dan menetapkan laluan pelaksanaannya. Kemudian, buat objek permintaan dan tentukan URL halaman untuk diakses dan teks carian. Seterusnya, anda boleh menetapkan saiz halaman dan kelewatan, serta jenis permintaan (POST atau GET). Akhir sekali, gunakan kaedah send() untuk menghantar permintaan dan menyimpan respons. Respons boleh diperolehi dalam objek $response.

3. Penggunaan lanjutan

Selain penggunaan asas di atas, PhantomJS juga mempunyai banyak kegunaan lanjutan yang boleh diterokai. Berikut ialah beberapa contoh:

    Dapatkan tangkapan skrin halaman
  1. Gunakan PhantomJS untuk menangkap tangkapan skrin dengan mudah Kod sampel adalah seperti berikut:
  2. <?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());
    Simulasikan operasi pengguna
  1. PhantomJS boleh mensimulasikan operasi menaip, mengklik dan, menaip. , Kod sampel adalah seperti berikut:
  2. <?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. Kesimpulan

PhantomJS ialah alat ujian tanpa antara muka yang berkuasa yang boleh membantu pembangun mengautomasikan ujian semasa proses pembangunan web. Dengan menggunakan PhantomJS dengan PHP, anda boleh menulis skrip ujian tanpa antara muka dan mensimulasikan tindakan pengguna dengan mudah. Sama ada untuk pembangun atau penguji, kecekapan ujian boleh dipertingkatkan dengan sangat baik.

Atas ialah kandungan terperinci Cara menggunakan PhantomJS untuk ujian tanpa antara muka dalam PHP. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn