我需要访问使用iframe(TrustArc)的网站,
<html>
<head></head>
<body>
<iframe src="https://consent-pref.trustarc.com/?type=example&site=example.com&action=notice&country=gb&locale=en&behavior=expressed&layout=default_eu&from=https://consent.trustarc.com/" id="pop-frame001407710514252325" title="TrustArc Cookie Consent Manager" tabindex="1" scrolling="no" style="border: 0px; border-radius: 2px; overflow: hidden; background: rgb(255, 255, 255); display: block; position: absolute; top: 0px; left: 0px; width: 100%; height: 100%;"></iframe>
当我跑步时:
$html = $browser->visit('https://www.example.com');
$browser->driver->takeScreenshot(base_path('tests/Browser/screenshots/logged.png'));
<?php echo "<img src='/tests/Browser/screenshots/logged.png'></img>"; ?>
当我获取HTML并在前端iframe上显示它时,我也看到iframe在窗口上方。
但是当我使用以下方法检查页面iframe时:
$browser->assertVisible("iframe");
我得到了:
元素[iframe]不可见。无法断言false为真。
当我尝试时:
$browser->driver->switchTo()->frame(0);
// $browser->driver->switchTo()->frame('iframe[src*="https://consent-pref.trustarc.com/?type=opentable&site=opentable.com&action=notice&country=gb&locale=en&behavior=expressed&layout=default_eu&from=https://consent.trustarc.com/"]');
我收到消息
没有这样的框架
我试图在每个步骤之间添加睡眠(10);但我收到了相同的错误消息。
我该如何解决问题?为什么我不能切换到iframe? 有什么想法吗?
更新
我也尝试过:
$browser->assertSourceHas('title="TrustArc Cookie Consent Manager"');
它已经通过,所以iframe在那儿,但我不知道如何访问该帧
更新2。
我也尝试过,但没有成功:
$browser->ensurejQueryIsAvailable();
$browser->assertSourceHas('title="TrustArc Cookie Consent Manager"');
$browser->script("$('iframe').attr('name','something')");
$browser->driver->switchTo()->frame('something');
$browser->waitUntil('.call')->click('.call');
sleep(10);
$browser->driver->switchTo()->defaultContent();