suchen

Heim  >  Fragen und Antworten  >  Hauptteil

Führen Sie Puppeteer-Aktionen im Laravel-Controller mithilfe von JavaScript-Code aus

<p>Ich verwende Puppeteer, um den Browser von einem Laravel-Controller aus zu starten, weiß aber nicht, wie ich JavaScript-Code vom Controller aus ausführen soll</p> <p>Meine Funktion ist wie folgt:</p> <pre class="brush:php;toolbar:false;">$script = <<<SCRIPT const puppeteer = require('puppeteer'); (async () => { const browser = waiting puppeteer.launch({headless: false}); const page = waiting browser.newPage(); Warten Sie auf page.goto('http://my-url.com'); const button = Seite warten.$('button#button'); Warten Sie auf button.evaluate( button => button.click() ); Warten Sie auf page.waitForTimeout(5000); ... Warten Sie auf browser.close(); })(); SKRIPT; $process = new Process(['node', '-e', $script]); $process->run(); $output = $process->getOutput();</pre> <p>Wenn ich versuche, nur diesen Teil des Codes in der Knoten-Shell auszuführen: </p> <pre class="brush:php;toolbar:false;">const puppeteer = require('puppeteer'); (async () => { const browser = waiting puppeteer.launch({headless: false}); const page = waiting browser.newPage(); Warten Sie auf page.goto('http://my-url.com'); const button = Seite warten.$('button#button'); Warten Sie auf button.evaluate( button => button.click() ); Warten Sie auf page.waitForTimeout(5000); ... Warten Sie auf browser.close(); })();</pre> <p>Es funktioniert einwandfrei und ich sehe einen geöffneten Browser. Wenn ich versuche, die gesamte Funktion auszuführen, funktioniert es nicht. Daher denke ich, dass die Art und Weise, wie ich den JS-Code im Controller ausführe, falsch ist. </p>
P粉098417223P粉098417223458 Tage vor536

Antworte allen(1)Ich werde antworten

  • P粉077701708

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

    我为JavaScript代码创建了一个新的js文件 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();
    })();

    而在控制器中,我已经进行了更改:

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

    这对我有用

    Antwort
    0
  • StornierenAntwort