【问题标题】: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>');
      

      在你的上下文类中。

      希望这会有所帮助。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-07-18
        • 1970-01-01
        • 2019-11-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多