繁体   English   中英

laravel dusk 测试登录wordpress 无法设置cookie

[英]laravel dusk test login to wordpress unable to set cookie

我正在使用 laravel dusk 使用以下功能登录到 wordpress 站点

 public function testLoginPage()
{
    $this->browse(function (Browser $browser) {
        $browser->visit('http://localhost/wordpress/wp-login.php')
            ->waitFor('#wp-submit')
            ->value('#user_login', '***')
            ->value('#user_pass', '***')
            ->click('#wp-submit')
            ->waitFor('#footer-thankyou')
            ->assertSee('Thank you for creating with');
        $this->saveCookies($browser);
    });
}

并保存创建的 cookie

protected $cookie_file = 'cookies.txt';

private function saveCookies(Browser $browser) {
    $cookies = $browser->driver->manage()->getCookies();
    file_put_contents($this->cookie_file, serialize($cookies));
}
private function loadCookies(Browser $browser) {
    if (file_exists($this->cookie_file)) {
        //Get cookies from storage
        $cookies = unserialize(file_get_contents($this->cookie_file));
        //Add each cookie to this session
        foreach ($cookies as $key => $cookie) {
            $browser->driver->manage()->addCookie($cookie);
        }
    }
}

现在我登录成功,cookie也被创建了在此处输入图片说明

但是当我像更新页面一样尝试管理中的 A 页面时,我收到无法设置 cookie 的错误(会话信息:chrome=86.0.4240.75)

public function testUpdateAllPlugins()
{
    $this->browse(function (Browser $browser) {
        $this->loadCookies($browser);
        $browser->visit('http://localhost/wp-admin/update-core.php')
            ->waitFor('#plugins-select-all')
            ->check('#plugins-select-all')
            ->click('#upgrade-plugins')
            #->withinFrame('iframe[title="Update progress"]', function($browser){
            ->withinFrame('.wrap > iframe', function($browser){
                $browser
                    ->assertSee('All updates have been completed');
            });
    });
}

我需要能够在登录后访问所有管理页面,所以我的问题是如何设置和使用从 laravel dusk 到 wordpress 站点的 cookie。 我在测试用例中使用以下命名空间

namespace Tests\Browser;

use Illuminate\Foundation\Testing\DatabaseMigrations;
use Laravel\Dusk\Browser;
use Tests\DuskTestCase;
use Facebook\WebDriver\Cookie;
use Facebook\WebDriver\WebDriverOptions;
use Laravel\Dusk\Chrome\ChromeProcess;
use Facebook\WebDriver\Remote\RemoteWebDriver;
use Facebook\WebDriver\Chrome\ChromeOptions;
use Facebook\WebDriver\Remote\DesiredCapabilities;

在此处输入图片说明

我在登录后立即使用访问代码使其工作,而不是设置 cookie 并使用不同的方法访问浏览器。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM