Laravel Dusk 在服务中使用测试结构无法连接
Laravel Dusk use test structure in service can't connect
这很奇怪。因此,我将下面的代码移植到服务中,以便从控制器 运行 它并能够传递一些信息。
$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 之一
dd("hello);
或 dd($text);
实际结果:
Failed to connect to localhost port 9515: Connection refused
如果我 运行 它在实际 dusk
测试中 运行 php artisan dusk
它工作正常。有什么东西先命令 运行s 才能到达外面吗?这还能做到吗?
如 Arun Code in the link: https://github.com/laravel/dusk/issues/356 所述,有一个响应允许您从 service/controller 打开浏览器,如下所示:
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();
这很奇怪。因此,我将下面的代码移植到服务中,以便从控制器 运行 它并能够传递一些信息。
$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 之一
dd("hello);
或 dd($text);
实际结果:
Failed to connect to localhost port 9515: Connection refused
如果我 运行 它在实际 dusk
测试中 运行 php artisan dusk
它工作正常。有什么东西先命令 运行s 才能到达外面吗?这还能做到吗?
如 Arun Code in the link: https://github.com/laravel/dusk/issues/356 所述,有一个响应允许您从 service/controller 打开浏览器,如下所示:
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();