在拉拉维尔黄昏将用户代理更改为移动设备



我正在尝试在Laravel Dusk上测试SP版本的视图。

我使用 jenssegers/agent 切换视图以在我的控制器上渲染。

运行拉拉维尔黄昏时有什么方法可以更改用户代理吗?

您可能希望像这样覆盖TestCase::driver函数:

protected function driver()
{
    // iPhone 6, for instance
    $ua = 'Mozilla/5.0 (iPhone; CPU iPhone OS 9_1 like Mac OS X) AppleWebKit/601.1.46 (KHTML, like Gecko) Version/9.0 Mobile/13B143 Safari/601.1';
    $capabilities = DesiredCapabilities::chrome();
    $options = new ChromeOptions;
    $options->setExperimentalOption('mobileEmulation', ['userAgent' => $ua]);
    return RemoteWebDriver::create(
        'http://localhost:9515', $options->toCapabilities()
    );
}

事实上,马桑的答案是部分正确的,但没有真正给出一个应该像这样的例子:

    <?php
    namespace TestsBrowser;
    use FacebookWebDriverChromeChromeOptions;
    use FacebookWebDriverRemoteRemoteWebDriver;
    use FacebookWebDriverRemoteDesiredCapabilities;
    use TestsDuskTestCase;
    use LaravelDuskBrowser;

    use IlluminateFoundationTestingDatabaseMigrations;
    class ExampleTest extends DuskTestCase
    {
        private $ua = 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.90 Safari/537.36';
        /**
         * A Dusk test example.
         *
         * @return void
         */
        public function testExample()
        {
            $this->browse(function (Browser $browser ) {
                $browser->visit('https://www.whatismybrowser.com/');
            dd("Stop");
            });
        }
        protected function driver()
        {
            $ua = $this->ua;
            $capabilities = DesiredCapabilities::chrome();
            $options = (new ChromeOptions)->addArguments([
                '--disable-gpu',
               // '--headless',
                '--force-device-scale-factor=0.8',
                '--window-size=1920,1080',
            ]);
            $options->setExperimentalOption('mobileEmulation', ['userAgent' => $ua]);
            return RemoteWebDriver::create(
                'http://localhost:9515', $options->toCapabilities()
            );
        }
}