如何解决Laravel Dusk 在访问某些页面时抛出 Curl POST 错误,即使页面请求是 GET 类型
我有一个项目在 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 举报,一经查实,本站将立刻删除。