madeitbelgium / chrome
Laravel Chrome浏览器提供简单的浏览器交互自动化。
1.6.1
2022-10-24 19:09 UTC
Requires
- php: >=7.1.0
- illuminate/console: *
- illuminate/support: *
- nesbot/carbon: ~1.20|2.*
- php-webdriver/webdriver: ~1.13
- symfony/console: *
- symfony/process: *
Requires (Dev)
- mockery/mockery: 1.*
- php-coveralls/php-coveralls: ~2.1
- phpunit/phpunit: 7.*|8.*|9.*
README
使用此Laravel包,您可以通过Chrome无头浏览器进行交互。此包基于Laravel Dusk。
安装
在您的composer.json
中添加此包,并更新composer。
"madeitbelgium/chrome": "^1.3"
文档
使用
$chromebrowser = new \MadeITBelgium\Chrome\ChromeBrowser(); $chromebrowser->setUp($url, false); //False = desktop $chromebrowser->startChromeDriver(); $chromebrowser->browse(function (Browser $browser) { $browser->visit('https://www.example.com'); $browser->screenshot('screenshot'); }); $chromebrowser->closeAll(); $chromebrowser->stopChromeDriver();
覆盖默认设置
要覆盖默认设置,您可以创建一个继承自MadeITBelgium\Chrome\ChromeBrowser类的自定义类。在您的自定义类中,您需要覆盖驱动函数。
<?php namespace App; use MadeITBelgium\Chrome\ChromeBrowser as ChromeBrowserParent; use Facebook\WebDriver\Chrome\ChromeOptions; use Facebook\WebDriver\Remote\DesiredCapabilities; use Facebook\WebDriver\Remote\RemoteWebDriver; use MadeITBelgium\Chrome\Chrome\SupportsChrome; use Facebook\WebDriver\Remote\WebDriverCapabilityType; class ChromeBrowser extends ChromeBrowserParent { public function driver() { $driverLocation = 'https://:9515'; //$driverLocation = 'https://:4444/wd/hub'; $args = [ '--disable-gpu', '--headless', '--no-sandbox', ]; $options = (new ChromeOptions())->addArguments($args); $ua = 'Mozilla/5.0 (iPhone; CPU iPhone OS 11_3 like Mac OS X) AppleWebKit/604.1.34 (KHTML, like Gecko) CriOS/67.0.3396.87 Mobile/15E216 Safari/604.1'; $options->setExperimentalOption('mobileEmulation', ['userAgent' => $ua]); $capabilities = DesiredCapabilities::chrome()->setCapability(ChromeOptions::CAPABILITY, $options); $capabilities->setCapability('proxy', [ 'proxyType' => 'manual', 'httpProxy' => 'http://proxyserver:3128', 'sslProxy' => 'http://proxyserver:3128', ]); return RemoteWebDriver::create($driverLocation, $capabilities); } }
$chromebrowser = new \App\ChromeBrowser(); $chromebrowser->setUp($url); $chromebrowser->startChromeDriver(); $chromebrowser->browse(function (Browser $browser) { $browser->visit('https://www.example.com'); }); $chromebrowser->closeAll(); $chromebrowser->stopChromeDriver();
更改位置
$chromebrowser = new \MadeITBelgium\Chrome\ChromeBrowser(); $chromebrowser->setUp($url, false); //False = desktop $chromebrowser->startChromeDriver(); $chromebrowser->browse(function (Browser $browser) { $devTools = new \Facebook\WebDriver\Chrome\ChromeDevToolsDriver($browser->driver); $coordinates = [ 'latitude' => 39.913818, 'longitude' => 116.363625, 'accuracy' => 1, ]; $devTools->execute('Emulation.setGeolocationOverride', $coordinates); $browser->visit('https://www.example.com'); $browser->screenshot('screenshot'); }); $chromebrowser->closeAll(); $chromebrowser->stopChromeDriver();
完整的文档可以在以下地址找到: http://www.madeit.be/
支持
支持github或邮件:tjebbe.lievens@madeit.be
贡献
请尽量遵循psr-2编码风格指南。http://www.php-fig.org/psr/psr-2/
许可证
此包受LGPL许可。您可以在个人和商业项目中自由使用它。代码可以被分叉和修改,但原始版权作者应始终包含在内!