【问题标题】:Behat / Selenium - Element is visible but not visible for testing frameworkBehat / Selenium - 元素对测试框架可见但不可见
【发布时间】:2015-10-16 09:26:55
【问题描述】:
我不确定是 Behat 还是 Selenium 问题,但在 Google 的帐户页面上,用户可以管理和删除连接到帐户的应用程序 - 我实际上无法使用 Behat 删除一个,因为它认为确认删除的对话框中的元素是不可见的.
页面在这里:https://security.google.com/settings/security/permissions
如果你有任何连接到你的谷歌帐户应用程序(如 Quora 或其他任何东西)点击Remove你会看到确认对话框,它有按钮OK,我可以用 Behat 选择这个元素,但是@987654326 @返回false。
不知道该怎么办。有什么想法吗?
【问题讨论】:
标签:
selenium
testing
cucumber
behat
gherkin
【解决方案1】:
不能说为什么是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);
【解决方案2】:
确定不是按钮,而是:
<content class="Nb"><span>OK</span></content>
所以你不能用“按“确定””来选择它。如果你有一个合适的选择器,你可以等待按钮出现(我猜),或者使用:
$this->getSession()->wait($time, '<javascript condition>');
在你的上下文类中。
希望这会有所帮助。