Laravel Dusk-元素[iframe]不可见

时间:2019-05-28 10:36:45

标签: laravel selenium-webdriver iframe webdriver laravel-dusk

我需要访问使用iframe(TrustArc)的网站,

<html>
    <head></head>
    <body>
        <iframe src="https://consent-pref.trustarc.com/?type=example&amp;site=example.com&amp;action=notice&amp;country=gb&amp;locale=en&amp;behavior=expressed&amp;layout=default_eu&amp;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&amp;site=opentable.com&amp;action=notice&amp;country=gb&amp;locale=en&amp;behavior=expressed&amp;layout=default_eu&amp;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();

0 个答案:

没有答案