我有一个HTML元素,应该只在第一个页面加载时显示。Javascript设置cookie,如果设置cookie,则不显示元素(PHP检查cookie,如果存在cookie,则不呈现内容)。
我正试着为这个做一个拉拉黄昏测试,当我禁用无头的时候,测试工作正常,但是如果-headless启用,元素仍然会被看到。
下面是一个测试:
$browser->visit('/')
->visit(new ThePage($param))
->assertSee('element text')
->visit(new ThePage($param))
->assertDontSee('element text');这似乎是因为无头铬中的javascript没有设置cookie.
检查->assertPlainCookieValue('hide_element','hide');支持这一点。
有办法绕道吗?
(编辑)下面是我试图隐藏的HTML元素:
<div id="cookiePolicy" class="cookie-policy">
<p>element text</p>
</div>截图
元素显示:

元素Hides:

下面是设置cookie的JS:
document.cookie = 'hide_cookie_policy=hide;path=.domainname.com;expires= Fri, 31 Dec 9999 23:59:59 GMT';发布于 2018-08-01 14:54:46
该问题是由自签名SSL证书引起的。
将->setCapability('acceptInsecureCerts', true)添加到DuskTestCase::driver()之后,cookie就可以工作了。
发布于 2022-06-17 17:02:24
我以一种稍微不同的方式取得了同样的结果,有些人可能会觉得.
在项目名称\test\DuskTestCase.php中,我修改了addArguments调用。
$options = (new ChromeOptions)->addArguments([
'--disable-gpu',
'--headless'
]);...to这个..。
$options = (new ChromeOptions)->addArguments([
'--disable-gpu',
'--headless',
'--ignore-certificate-errors'
]);传递--ignore-certificate-errors参数似乎实现了与将acceptInsecureCerts功能设置为true相同的结果,同时保留了现有的功能。
https://stackoverflow.com/questions/51619633
复制相似问题