Effectuer des actions Puppeteer dans le contrôleur Laravel à l'aide du code JavaScript
P粉098417223
2023-08-28 09:40:29
<p>J'utilise Puppeteer pour lancer le navigateur à partir d'un contrôleur Laravel, mais je ne sais pas comment exécuter du code JavaScript à partir du contrôleur</p>
<p>Ma fonction est la suivante :</p>
<pre class="brush:php;toolbar:false;">$script = <<<SCRIPT
const marionnettiste = require('marionnettiste');
(async () => {
const navigateur = wait puppeteer.launch({headless: false});
const page = attendre navigateur.newPage();
attendre page.goto('http://my-url.com');
const bouton = attendre la page.$('button#button');
attendre bouton.evaluate( bouton => bouton.click() );
attendre page.waitForTimeout(5000);
...
attendre le navigateur.close();
})();
SCÉNARIO;
$process = new Process(['node', '-e', $script]);
$process->run();
$output = $process->getOutput();</pre>
<p>Lorsque j'essaie d'exécuter uniquement cette partie du code dans le shell du nœud : </p>
<pre class="brush:php;toolbar:false;">const marionnettiste = require('marionnettiste');
(async () => {
const navigateur = wait puppeteer.launch({headless: false});
const page = attendre navigateur.newPage();
attendre page.goto('http://my-url.com');
const bouton = attendre la page.$('button#button');
attendre bouton.evaluate( bouton => bouton.click() );
attendre page.waitForTimeout(5000);
...
attendre le navigateur.close();
})();</pre>
<p>Cela fonctionne bien et je peux voir un navigateur ouvert. Lorsque j'essaie d'exécuter toute la fonction, cela ne fonctionne pas. Je pense donc que la façon dont j'exécute le code JS dans le contrôleur est erronée. </p>
J'ai créé un nouveau fichier js pour le code JavaScript
script.js
Et dans le contrôleur j'ai effectué les modifications :
Cela a fonctionné pour moi