Laravel Chrome浏览器提供简单的浏览器交互自动化。

1.6.1 2022-10-24 19:09 UTC

This package is auto-updated.

Last update: 2024-09-25 00:03:09 UTC


README

Build Status Coverage Status Latest Stable Version Latest Unstable Version Total Downloads License

使用此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许可。您可以在个人和商业项目中自由使用它。代码可以被分叉和修改,但原始版权作者应始终包含在内!