如何告诉 Laravel Dusk 使用 Chrome 测试(CFT)浏览器而不是常规安装的 Chrome 版本

问题描述 投票:0回答:1

黄昏版本-8.2.5

Laravel 版本 - 10.35.0

PHP 版本 - 8.2.13

PHPUnit 版本 - 10.5.2

我一直在使用 Chrome-for-Testing 中的 Chromedriver 和 Laravel Dusk 来测试我们的应用程序。直到最近,我一直在对我的机器上安装的常规 Chrome 浏览器版本进行测试。这一切都很好,直到可用的 chromedriver 版本与我的常规 chrome 浏览器版本不同步,并且我收到了可怕的 Failed to connect to localhost 错误

Curl error thrown for http POST to /session with params: {"capabilities":{"firstMatch":[{"browserName":"chrome","goog:chromeOptions":{"args":["--window-size=1920,1080"]}}]},"desiredCapabilities":{"browserName":"chrome","platform":"ANY","goog:chromeOptions":{"args":["--window-size=1920,1080"]}}}
Failed to connect to localhost port 9515 after 1 ms: Couldn't connect to server

据我了解,答案是获取 CfT 浏览器的匹配版本进行测试,例如获取 128.0.6613.137 ChromeDriver 和 128.0.6613.137 CfT 浏览器。

我这样做了,但我无法让 Dusk 使用那个 CfT 浏览器。

我尝试过的

我将二进制位置(我认为是 CfT 浏览器位置而不是 Chromedriver 位置)设置为 DuskTestCase.php > 驱动程序方法;

$options->setBinary('/Applications/Google\Chrome\for\Testing.app/Contents/MacOS/Google\Chrome\for\Testing');

结果(错误)

我的所有测试仍然因卷曲错误而失败;

Curl error thrown for http POST to /session with params: {"capabilities":{"firstMatch":[{"browserName":"chrome","goog:chromeOptions":{"binary":"/Applications/Google\ Chrome\ for\ Testing.app/Contents/MacOS/Google\ Chrome\ for\ Testing","args":["--window-size=1920,1080"]}}]},"desiredCapabilities":{"browserName":"chrome","platform":"ANY","goog:chromeOptions":{"binary":"/Applications/Google\ Chrome\ for\ Testing.app/Contents/MacOS/Google\ Chrome\ for\ Testing","args":["--window-size=1920,1080"]}}}
Failed to connect to localhost port 9515 after 0 ms: Couldn't connect to server

我尝试过的其他事情

我尝试将路径更改为明显不正确的路径,但出现了相同的错误。我尝试省略 CfT 浏览器二进制文件的路径,但得到了相同的错误

其他想法

这可能不是 chromedriver 和浏览器不同步的问题。这始于“无法连接到本地主机”错误,过去这是因为 chromedriver 和安装的 chrome 浏览器不同步。我假设如果 ChromeDriver 和 Chrome 浏览器同步,问题就会得到解决。但有点奇怪的是,当我设置一个明显不正确的 CfT 浏览器路径时,我没有收到错误。

laravel laravel-10 laravel-dusk laravel-dusk2
1个回答
0
投票

我在黄昏测试中也遇到了同样的问题。经过一番查找后,我终于在仓库中找到了这个 PR:https://github.com/laravel/dusk/pull/1124.

在我的 DuskTestCase.php 中,我手动调用

static::startChromeDriver()
,因此我需要在调用中实现相同的更改并指定端口:
static::startChromeDriver(['--port=9515']);

不确定这对您来说是否相同,但可能值得一看。

© www.soinside.com 2019 - 2024. All rights reserved.