cari

Rumah  >  Soal Jawab  >  teks badan

Lakukan tindakan Puppeteer dalam pengawal Laravel menggunakan kod JavaScript

<p>Saya menggunakan Puppeteer untuk melancarkan penyemak imbas daripada pengawal laravel, tetapi saya tidak tahu cara menjalankan kod JavaScript daripada pengawal</p> <p>Fungsi saya adalah seperti berikut:</p> <pre class="brush:php;toolbar:false;">$script = <<<SKRIP const puppeteer = memerlukan('puppeteer'); (async () => { pelayar const = tunggu puppeteer.launch({headless: false}); halaman const = tunggu browser.newPage(); tunggu page.goto('http://my-url.com'); butang const = halaman tunggu.$('butang#butang'); tunggu button.evaluate( button => button.click() ); tunggu page.waitForTimeout(5000); ... tunggu browser.close(); })(); SKRIP; $proses = Proses baharu(['nod', '-e', $script]); $proses->jalankan(); $output = $process->getOutput();</pre> <p>Apabila saya cuba menjalankan hanya bahagian kod ini dalam cangkang nod: </p> <pre class="brush:php;toolbar:false;">const puppeteer = memerlukan('puppeteer'); (async () => { pelayar const = tunggu puppeteer.launch({headless: false}); halaman const = tunggu browser.newPage(); tunggu page.goto('http://my-url.com'); butang const = halaman tunggu.$('butang#butang'); tunggu button.evaluate( button => button.click() ); tunggu page.waitForTimeout(5000); ... tunggu browser.close(); })();</pra> <p>Ia berfungsi dengan baik dan saya dapat melihat penyemak imbas dibuka. Apabila saya cuba menjalankan keseluruhan fungsi ia tidak berfungsi. Jadi saya rasa cara saya menjalankan kod JS dalam pengawal adalah salah. </p>
P粉098417223P粉098417223458 hari yang lalu538

membalas semua(1)saya akan balas

  • P粉077701708

    P粉0777017082023-08-29 00:16:15

    Saya mencipta fail js baharu untuk kod JavaScript script.js

    // script.js
    
    const puppeteer = require('puppeteer');
    (async () => {
        const browser = await puppeteer.launch({headless: false});     
        const page = await browser.newPage();
        await page.goto('http://my-url.com');
        const button = await page.$('button#button');
        await button.evaluate( button => button.click() );
        await page.waitForTimeout(5000);
        ...
        await browser.close();
    })();

    Dan dalam pengawal saya telah membuat perubahan:

    $process = new Process(['path/to/node', 'path/to/script.js]);
    $process->run();
    if(!$process->isSuccessful()) {
      throw new ProcessFailedException($process);
    }
    $output = $process->getOutput();
    $errors = $process->getErrorOutput();

    Ini berkesan untuk saya

    balas
    0
  • Batalbalas