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);
我不确定是 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);