Behat / Selenium - 元素可见但对于测试框架不可见

Behat / Selenium - Element is visible but not visible for testing framework

我不确定是 Behat 还是 Selenium 问题,但在 Google 的帐户页面上,用户可以在其中管理和删除连接到帐户的应用程序 - 我实际上无法使用 Behat 删除一个,因为它认为对话框中确认删除的元素是不可见的。

页面在这里:https://security.google.com/settings/security/permissions

如果您有任何连接到您的 google 帐户应用程序(如 Quora 或其他任何应用程序),请单击 Remove 您将看到确认对话框,其中有按钮 OK,我可以 select 这个元素与 Behat,但是 $el->isVisible() returns false.

不知道该怎么办。有什么想法吗?

确定不是按钮,而是:

<content class="Nb"><span>OK</span></content>

所以你不能 select 它 "press "OK""。如果你有合适的 select 或者,你可以等待按钮出现(我猜),或者使用:

$this->getSession()->wait($time, '<javascript condition>');

在您的上下文中 class。

希望对您有所帮助。

不能说为什么是 invisible 但你可以直接用 JavaScript 点击它,像这样:

    $cssSelector = "div[role='dialog'] div[role='button'][autofocus] SPAN";

    $js  = 'var event = document.createEvent("HTMLEvents");';
    $js .= 'var element = document.querySelectorAll("'.$cssSelector.'")[0];';
    $js .= 'event.initEvent("click", true, true);';
    $js .= 'event.eventName = "click";';
    $js .= 'element.dispatchEvent(event);';

    $this->getSession()->executeScript($js);