JavaScript コードを使用して Laravel コントローラーで Puppeteer アクションを実行する
P粉098417223
2023-08-28 09:40:29
<p>Puppeteer を使用して Laravel コントローラーからブラウザを起動していますが、コントローラーから JavaScript コードを実行する方法がわかりません</p>
<p>私の関数は次のとおりです:</p>
<pre class="brush:php;toolbar:false;">$script = <<<SCRIPT
const puppeteer = require('puppeteer');
(async () => {
const browser = await puppeteer.launch({headless: false});
const page = ブラウザを待ちます.newPage();
await page.goto('http://my-url.com');
const button = ページを待ちます。$('button#button');
await button.evaluate( button => button.click() );
await page.waitForTimeout(5000);
...
ブラウザを待つ.close();
})();
脚本;
$process = 新しいプロセス(['node', '-e', $script]);
$process->run();
$output = $process->getOutput();;
<p>ノード シェルでコードのこの部分だけを実行しようとすると: </p>
<pre class="brush:php;toolbar:false;">const puppeteer = require('puppeteer');
(async () => {
const browser = await puppeteer.launch({headless: false});
const page = ブラウザを待ちます.newPage();
await page.goto('http://my-url.com');
const button = ページを待ちます。$('button#button');
await button.evaluate( button => button.click() );
await page.waitForTimeout(5000);
...
ブラウザを待つ.close();
})();
<p>正常に動作し、ブラウザが開いていることがわかります。関数全体を実行しようとすると、機能しません。したがって、コントローラーでJSコードを実行する方法が間違っていると思います。 </p>
JavaScript コード用の新しい js ファイルを作成しました
リーリーscript.js
そして、コントローラーに変更を加えました:
リーリーこれは私にとってはうまくいきました