微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Laravel Dusk 在访问某些页面时抛出 Curl POST 错误,即使页面请求是 GET 类型

如何解决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 举报,一经查实,本站将立刻删除。