问题描述
我有一个项目在 Laravel 6.0.4、Windows 10 64Bit、PHP 7.4.8 上成功运行。
我已经设置了 Dusk 和 Chrome 驱动程序,并确保它们的版本兼容,而且 Chrome 是最新版本并与 Chrome 驱动程序兼容:
laravel/dusk v6.9.1 Laravel Dusk provides simple end-to-end testing and browser automat...
staudenmeir/dusk-updater v1.2.2 Updater for Laravel Dusk ChromeDriver binaries
Chrome version 87.0.4280.88 detected.
No update necessary,your ChromeDriver binary is already on version 87.0.4280.88.
此外,当我对一些内容相对简单且不涉及任何控制器/视图文件中的任何 SQL 查询执行的页面进行测试时,打开正常,Google 登录也正常工作。>
但是当我在登录后访问一个特定页面时,它是 http://localhost:8000/admin/campaign-manager,它抛出这个错误:
有 1 个错误:
1) Tests\Browser\CampaingManagerPathsExistTest::mainPathTest
Facebook\WebDriver\Exception\WebDriverCurlException: Curl error thrown for http POST to /session/0c3e1f2ac398d7c19975422219d6fe4a/url with params: {"url":"http:\/\/loca
lhost:8000\/admin\/campaign-manager"}
Operation timed out after 30000 milliseconds with 0 bytes received
C:\lmt2\vendor\php-webdriver\webdriver\lib\Remote\HttpCommandExecutor.php:332
C:\lmt2\vendor\php-webdriver\webdriver\lib\Remote\RemoteWebDriver.php:612
C:\lmt2\vendor\php-webdriver\webdriver\lib\Remote\RemoteExecuteMethod.php:27
C:\lmt2\vendor\php-webdriver\webdriver\lib\WebDriverNavigation.php:41
C:\lmt2\vendor\laravel\dusk\src\Browser.php:153
C:\lmt2\tests\Browser\CampaingManagerPathsExistTest.php:41
C:\lmt2\vendor\laravel\dusk\src\Concerns\ProvidesBrowser.php:68
C:\lmt2\tests\Browser\CampaingManagerPathsExistTest.php:42
ERRORS!
Tests: 1,Assertions: 1,Errors: 1.
以下是我编写的测试代码,它适用于 /search
、/admin/[otherpage]
等其他页面,但不适用于上述页面:
<?php
namespace Tests\Browser;
use Illuminate\Foundation\Testing\DatabaseMigrations;
use Laravel\Dusk\Browser;
use Tests\DuskTestCase;
class CampaingManagerPathsExistTest extends DuskTestCase
{
/**
* <ProjectName> Login Test
* @return void
*/
protected function loginRedirectCheck($browser)
{
$browser->maximize();
$browser->visit('https://accounts.google.com/o/oauth2/auth?client_id=404959754299-7qdrdf5i7um4p7gle2f0t6u55k4ojj1m.apps.googleusercontent.com&redirect_uri=http%3A%2F%2Flocalhost%3A8000%2Fauth%2Fgoogle%2Fcallback&scope=openid+profile+email&response_type=code&state=tUFtLPv61f5Av05L7CJ1sO3mEVHuJkgQQvJIH1Fd&flowName=GeneralOAuthFlow')
->type('#identifierId','<GoogleEmailID>')
->click('#identifierNext')
->waitFor('input[name=password]')
->type('input[name=password]','<GooglePassword>')
->click('#passwordNext')
->waitForLocation('/search',30)
->assertPathIs('/search');
}
/**
* @test
* @group cm-main-path-check
*
* Campaign Manager Path exists test
* @return void
*/
public function mainPathTest()
{
$this->browse(function (Browser $browser) {
$this->loginRedirectCheck($browser);
// $browser->visit('http://localhost:8000/search')->assertTitle('Search page title');
// $browser->visit('http://localhost:8000/admin/clients')->assertTitle('Clients Page title');
$browser->visit('http://localhost:8000/admin/campaign-manager')->assertTitle('Dashboard | Campaign Manager');
});
}
}
正如我之前提到的,我访问时的其他 URL(CampaingManagerPathsExistTest 中第二个方法中的注释代码)工作正常,但是这个 /admin/campaign-manager
页面涉及在它的 Controller 和查看文件,自动化测试在浏览器中访问页面后总是抛出上述错误(我开启了non-headless chrome实例)。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)