ヘッドレスブラウザ phantomjs
jsで作られたあとの表示をスクレイピングしたい。
PhantomJSは開発を中止している。
puppeteer (パペッティア)が後継?
PuPHPeteerはNodeライブラリであるPuppeteerをPHPでも利用出来るようにしたもの
nodejs などが必要なようで、単体では動かない?
ブラウザをつかわない方法に対して、
ブラウザテストなどを目的とした
seleniumを使った方法や
duskという方法もあるみたい。
laravelを使いたいのでduskを使ってみようか
ブラウザを自動操作できる?
DuskはスタンドアロンのChromeDriverを使用
composer require --dev laravel/dusk
エラー
The openssl extension is required for SSL/TLS protection but is not available. If you can not enable the openssl extension, you can disable this error, at your own risk, by setting the 'disable-tls' option to true
php.iniを変更
curl,openssl部分
extension_dir = "ext"
extension=bz2
extension=curl
extension=openssl
composer require --dev laravel/dusk
再度挑戦。
インストールできた。
php artisan dusk:install
Warning: TTY mode is not supported on Windows platform.
PHPUnit requires the "mbstring" extension.
またもやエラーphp.iniの変更
Warning: TTY mode is not supported on Windows platform.
PHPUnit 9.5.19 #StandWithUkraine
No tests executed!
php artisan dusk:make test
testsというフォルダができる
なかに
Browser
Feature
Unit
ができる。
実行してみる
TTY mode is not supported on Windows platform.
エラー
Warning: TTY mode is not supported on Windows platform.
これは、無視してもよいという人もいる。色付けなどの部分なので、実際の実行には影響はすくないらしい。
まずはこの状態で、テストをしてみたい。
ブラウザが立ち上がり、テキストを読み込んだり、clickしたりしたい。
tests\DuskTestCase.php
option “–headless” をコメントアウトすると実際にブラウザが立ち上がる。
いまいちエラーがどこで起きているのか判別できない・
$browser->driver->manage()->getLog('browser');
これでも取れない。
iframeが問題か
withinFrame
というものがあるらしい。
こちらでうまくいった!
ありがとうございます。