启用 Chrome Headless 时 Dusk 测试失败

2024-05-07

我有一个 HTML 元素,该元素应该仅在第一页加载时显示。 Javascript 设置 cookie,如果设置了 cookie,则不会显示该元素(PHP 检查 cookie,如果 cookie 存在,则不会呈现内容)。

我正在尝试为此进行 laravel dusk 测试,当我禁用 --headless 时测试工作正常,但如果启用 --headless 则仍然可以看到该元素。

这是测试:

$browser->visit('/')
    ->visit(new ThePage($param))
    ->assertSee('element text')
    ->visit(new ThePage($param))
    ->assertDontSee('element text');

这似乎是因为无头 Chrome 中的 javascript 没有设置 cookie。

检查 ->assertPlainCookieValue('hide_element', '隐藏'); 支持这一点。

有没有解决的办法?

(编辑)这是我试图隐藏的 HTML 元素:

<div id="cookiePolicy" class="cookie-policy">
    <p>element text</p>
</div>

截图

Element shows: enter image description here

Element Hides: enter image description here

设置cookie的JS如下:

document.cookie = 'hide_cookie_policy=hide;path=.domainname.com;expires= Fri, 31 Dec 9999 23:59:59 GMT';

该问题是由自签名 SSL 证书引起的。

添加后->setCapability('acceptInsecureCerts', true) to DuskTestCase::driver(),cookie 起作用了。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

启用 Chrome Headless 时 Dusk 测试失败 的相关文章

随机推荐