【问题标题】:Laravel Dusk - Failed to connect to localhost port 9515: Connection refusedLaravel Dusk - 无法连接到 localhost 端口 9515:连接被拒绝
【发布时间】:2019-10-11 21:44:06
【问题描述】:

我想创建一个我将从 Controller 使用的测试,所以我写了:

<?php

namespace App\Http\Controllers\Modules;
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
use Laravel\Dusk\ElementResolver;
use Exception;

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

class TestController extends Controller {



  public function test() {

    $process = (new ChromeProcess)->toProcess();
    if ($process->isStarted()) {
      $process->stop();
    }
    $process->start();

    $options      = (new ChromeOptions)->addArguments(['--disable-gpu', '--headless', '--no-sandbox']);
    $capabilities = DesiredCapabilities::chrome()
      ->setCapability(ChromeOptions::CAPABILITY, $options);

          $driver = retry(1, function () use ($capabilities) {
      return RemoteWebDriver::create('http://localhost:9515', $capabilities, 60000, 60000);
    }, 50);

    $browser = new Browser($driver, new ElementResolver($driver, ''));
    $browser->resize(1920, 1080);
    $browser->visit('https://example.com/login')->click('#.btn > form > div.auth-form-body.mt-3 > input.btn.btn-primary.btn-block');
    $browser->driver->takeScreenshot(base_path('tests/Browser/screenshots/logged.png'));

  }


}

当我使用 localhost:8000/test 运行这个脚本时,我收到了这条消息:

Facebook\WebDriver\Exception\WebDriverCurlException 卷曲错误 使用参数将 http POST 抛出到 /session: {"desiredCapabilities":{"browserName":"chrome","platform":"ANY","chromeOptions":{"binary":"","args":["--disable-gpu","--无头","--no-sandbox"]}}} 无法连接到 localhost 端口 9515:连接被拒绝

我该如何解决这个问题?

目前我在 Win10 上使用 WAMP 服务器进行本地测试,但随后我将在 Linux Ubuntu 18 上移动代码。

【问题讨论】:

  • 过去 3 天我一直在尝试解决非常相似的问题。我还没有找到适合我的解决方案:(
  • 必须有某种方法可以从控制器运行它
  • @Watercayman 知道这里有什么问题吗?
  • 为了在控制器中运行 Dusk,我使用了 - github.com/duncan3dc/dusk 。我没有深入研究他的代码,但它工作得很好
  • 您使用的是哪个版本的 Chrome?

标签: php laravel testing phpunit laravel-dusk


【解决方案1】:

我无法完全解释,但这在 Windows 上对我有用:

$process = (new ChromeProcess)->toProcess();
if ($process->isStarted()) {
  $process->stop();
}

$process->start(null, [
    'SystemRoot' => 'C:\\WINDOWS',
    'TEMP' => 'C:\Users\<User>\AppData\Local\Temp',
]);

[...]

&lt;User&gt; 替换为您的用户目录的名称。

【讨论】:

  • 请尝试retry(5,
  • 是的,现在我得到:未知错误:找不到 Chrome 二进制文件(驱动程序信息:chromedriver=74.0.3729.6 (255758eccf3d244491b8a1317aa76e1ce10d57e9-refs/branch-heads/3729@{#29}),platform= Linux 3.10.0-957.12.2.el7.x86_64 x86_64)
  • 您是否在 Linux 机器上安装了 Chrome?它可以在 Windows 上运行吗?
  • 不,在 WInodws 上不起作用...我在 Linux 上安装 Laravel Dusk 并进入 /vendor/laravel/dusk/bin 文件夹我有 chrome 文件
  • 这只是 ChromeDriver。您还必须安装 Chrome 浏览器
猜你喜欢
  • 2017-06-21
  • 1970-01-01
  • 2020-11-20
  • 1970-01-01
  • 2017-09-08
  • 2019-01-07
  • 2021-09-08
  • 2015-10-19
  • 2016-10-18
相关资源
最近更新 更多