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也被创建了
但是当我在管理员中尝试更新页面之类的页面时,我收到无法设置 cookie 的错误(Session 信息: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 的 cookie 到 wordpress 站点。
我在测试用例中使用以下命名空间
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 并使用不同的方法访问浏览器。
我正在使用 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也被创建了
但是当我在管理员中尝试更新页面之类的页面时,我收到无法设置 cookie 的错误(Session 信息: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 的 cookie 到 wordpress 站点。 我在测试用例中使用以下命名空间
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 并使用不同的方法访问浏览器。