- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个带 Sail 的 Laravel,我想用 Laravel Dusk 进行自动化测试。我按照 Dusk Documentation 中的所有说明进行操作和 Sail + Dusk Installation ,但是当我运行默认测试时,我收到此错误消息:
Tests\Browser\ExampleTest::testBasicExample
Facebook\WebDriver\Exception\WebDriverCurlException: Curl error thrown for http POST to /session with params: {"capabilities":{"firstMatch":[{"browserName":"chrome","goog:chromeOptions":{"args":["--disable-gpu","--headless","--no-sandbox","--window-size=1920,1080"]},"acceptInsecureCerts":true}]},"desiredCapabilities":{"browserName":"chrome","platform":"ANY","chromeOptions":{"args":["--disable-gpu","--headless","--no-sandbox","--window-size=1920,1080"]},"acceptInsecureCerts":true}}
Failed to connect to localhost port 4444: Connection refused
/var/www/html/vendor/php-webdriver/webdriver/lib/Remote/HttpCommandExecutor.php:333
/var/www/html/vendor/php-webdriver/webdriver/lib/Remote/RemoteWebDriver.php:136
/var/www/html/tests/DuskTestCase.php:69
/var/www/html/vendor/laravel/dusk/src/Concerns/ProvidesBrowser.php:218
/var/www/html/vendor/laravel/framework/src/Illuminate/Support/helpers.php:234
/var/www/html/vendor/laravel/dusk/src/Concerns/ProvidesBrowser.php:219
/var/www/html/vendor/laravel/dusk/src/Concerns/ProvidesBrowser.php:97
/var/www/html/vendor/laravel/dusk/src/Concerns/ProvidesBrowser.php:65
/var/www/html/tests/Browser/ExampleTest.php:21
但是如果在 Insomnia 中执行请求,它运行没有任何问题:
这是我的 docker-compose:
# For more information: https://laravel.com/docs/sail
version: '3'
services:
laravel.test:
build:
context: ./vendor/laravel/sail/runtimes/8.0
dockerfile: Dockerfile
args:
WWWGROUP: '${WWWGROUP}'
image: sail-8.0/app
ports:
- '${APP_PORT:-80}:80'
environment:
WWWUSER: '${WWWUSER}'
LARAVEL_SAIL: 1
volumes:
- '.:/var/www/html'
networks:
- sail
depends_on:
- mysql
- redis
- selenium
selenium:
image: 'selenium/standalone-chrome'
volumes:
- '/dev/shm:/dev/shm'
networks:
- sail
ports:
- 4444:4444
#depends_on:
# - laravel.test
mysql:
image: 'mysql:8.0'
ports:
- '${DB_PORT}:3306'
environment:
MYSQL_ROOT_PASSWORD: '${DB_PASSWORD}'
MYSQL_DATABASE: '${DB_DATABASE}'
MYSQL_USER: '${DB_USERNAME}'
MYSQL_PASSWORD: '${DB_PASSWORD}'
MYSQL_ALLOW_EMPTY_PASSWORD: 'yes'
volumes:
- 'sailmysql:/var/lib/mysql'
networks:
- sail
redis:
image: 'redis:alpine'
ports:
- '${REDIS_PORT}:6379'
volumes:
- 'sailredis:/data'
networks:
- sail
# memcached:
# image: 'memcached:alpine'
# ports:
# - '11211:11211'
# networks:
# - sail
mailhog:
image: 'mailhog/mailhog:latest'
ports:
- 1025:1025
- 8025:8025
networks:
- sail
networks:
sail:
driver: bridge
volumes:
sailmysql:
driver: local
sailredis:
driver: local
还有我的 DuskTestCase
<?php
namespace Tests;
use Facebook\WebDriver\Chrome\ChromeOptions;
use Facebook\WebDriver\Remote\DesiredCapabilities;
use Facebook\WebDriver\Remote\RemoteWebDriver;
use Laravel\Dusk\TestCase as BaseTestCase;
abstract class DuskTestCase extends BaseTestCase {
use CreatesApplication;
/**
* Prepare for Dusk test execution.
*
* @beforeClass
* @return void
*/
public static function prepare() {
if (!static::runningInSail()) {
static::startChromeDriver();
}
}
/**
* Create the RemoteWebDriver instance.
*
* @return \Facebook\WebDriver\Remote\RemoteWebDriver
*/
protected function driver() {
$options = (new ChromeOptions)->addArguments([
'--disable-gpu',
'--headless',
'--no-sandbox',
'--window-size=1920,1080',
]);
return RemoteWebDriver::create(
'http://localhost:4444/wd/hub', DesiredCapabilities::chrome()->setCapability(
ChromeOptions::CAPABILITY, $options
)->setCapability('acceptInsecureCerts', TRUE)
);
}
}
我真的不知道我做错了什么。抱歉我的英语不好,我是巴西人。
最佳答案
经过很多天,我终于设法解决了我的问题。阅读Docker documentation我发现我可以使用图像名称作为 URL,所以我切换到 http://selenium:4444 并且测试完美运行!
这是我的新代码:
<?php
namespace Tests;
use Facebook\WebDriver\Chrome\ChromeOptions;
use Facebook\WebDriver\Remote\DesiredCapabilities;
use Facebook\WebDriver\Remote\RemoteWebDriver;
use Laravel\Dusk\TestCase as BaseTestCase;
abstract class DuskTestCase extends BaseTestCase {
use CreatesApplication;
/**
* Prepare for Dusk test execution.
*
* @beforeClass
* @return void
*/
public static function prepare() {
if (!static::runningInSail()) {
static::startChromeDriver();
}
}
/**
* Create the RemoteWebDriver instance.
*
* @return \Facebook\WebDriver\Remote\RemoteWebDriver
*/
protected function driver() {
$options = (new ChromeOptions)->addArguments([
'--disable-gpu',
'--headless',
'--no-sandbox',
'--window-size=1920,1080',
]);
return RemoteWebDriver::create(
'http://selenium:4444/wd/hub', DesiredCapabilities::chrome()->setCapability(
ChromeOptions::CAPABILITY, $options
)->setCapability('acceptInsecureCerts', TRUE)
);
}
}
希望能帮到有同样问题的人!
关于Laravel 帆 + 黄昏 + Selenium : Connection refused,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65569147/
谁能帮忙,我无法让 Laravel 黄昏在我当前在 mac high sierra 上的 Laravel 5.6 项目中运行默认示例测试。 错误信息 时间:2.5 分钟,内存:14.00MB 有 1
我知道您可以从元素中获取文本,如下所示: $text = $browser->text('.selector'); 我的问题是:如何获取原始 HTML 内容?例如。以下不起作用 $text = $br
我有一个带 Sail 的 Laravel,我想用 Laravel Dusk 进行自动化测试。我按照 Dusk Documentation 中的所有说明进行操作和 Sail + Dusk Install
我正在按照有关如何从此处运行浏览器测试的说明 https://laravel.com/docs/8.x/dusk 进行操作使用在 VirtualBox 虚拟机上运行的 Homestead 全新安装 L
这个问题现在已经被问过好几次了,但我尝试了所有的解决方案,我发现并有一个运行“正常”的 PHPUnit 测试,具有类似的设置,所以我所做的一切都不会是错误的。 问题来了: 我知道这个问题与 Gitla
我正在尝试运行我用 laravel dusk 做的测试,但是当我运行命令 php artisan dusk 时,我收到消息说他找不到我用 php artisan dusk:make 做的任何测试。这是
我正在尝试在 Laravel 5.4 的浏览器测试中测试邮件。 我在 browse 回调函数内的 InvitationTest 类中有以下代码: \Mail::fake(); $browser->vi
我正在尝试运行我用 laravel dusk 做的测试,但是当我运行命令 php artisan dusk 时,我收到消息说他找不到我用 php artisan dusk:make 做的任何测试。这是
我正在使用 laravel 5.6 和 Dusk 进行此特定测试。 我正在尝试在我的放置区中断言文件上传。但是我的 Dropzone 是以我没有 file 输入元素的方式创建的。所以我不能使用 att
我一直在尝试的是在使用 Laravel Dusk 进行测试时使用内存数据库。 这里我们有一个文件,.env.dusk.local,具有以下值。 DB_CONNECTION=sqlite DB_DATA
我试图在每次测试前更改一些配置值。但是,浏览器不应用它们。 在我的 DuskTestCase 文件中: abstract class DuskTestCase extends BaseTestCase
public function tearDown() { $this->browse(function (Browser $browser) { $br
我是一名优秀的程序员,十分优秀!