Laravel Dusk не может подключиться к тестовой структуре - PullRequest
0 голосов
/ 04 июня 2019

Это странно. Итак, у меня есть приведенный ниже код, который я перенес в службу, чтобы запустить его с контроллера и передать некоторую информацию.

$this->browse(function (Browser $browser) {
    $browser->visit('https://urlforsite.co.uk/find-an-engineer/')
        ->type("EngineerId", "2231321")
        ->click('#checkEngineer');

    if ($browser->assertSee("Engineer cannot be found")) {
        dd("hello");
    }

    $text = $browser->text('.engineer-search-results-container .search-result .col-md-8 .row .col-xs-10 h3');
        dd($text);
    });

Ожидаемый результат будет одним из ДД

dd("hello); или dd($text);

Фактический результат:

Failed to connect to localhost port 9515: Connection refused

Если я запускаю его в реальном dusk тесте и запускаю php artisan dusk, он работает правильно. Есть ли что-то, что команда запускается первой, чтобы она могла попасть наружу? Можно ли это сделать?

1 Ответ

0 голосов
/ 04 июня 2019

Как указано Код Аруна в ссылке: https://github.com/laravel/dusk/issues/356 есть ответ, который позволяет открыть браузер из службы / контроллера, например:

use Facebook\WebDriver\Chrome\ChromeOptions;
use Facebook\WebDriver\Remote\DesiredCapabilities;
use Facebook\WebDriver\Remote\RemoteWebDriver;
use Laravel\Dusk\Browser;
use Laravel\Dusk\Chrome\ChromeProcess;

$process = (new ChromeProcess)->toProcess();
$process->start();
$options = (new ChromeOptions)->addArguments(['--disable-gpu', '--headless']);
$capabilities = DesiredCapabilities::chrome()->setCapability(ChromeOptions::CAPABILITY, $options);
$driver = retry(5, function () use($capabilities) {
    return RemoteWebDriver::create('http://localhost:9515', $capabilities);
}, 50);
$browser = new Browser($driver);
$browser->visit('https://www.google.com');
$browser->quit();
$process->stop();
...