【问题标题】:How to click an element that is blocked in protractor?如何单击量角器中被阻止的元素?
【发布时间】:2020-09-16 06:12:18
【问题描述】:

我正在尝试单击一个按钮,但有时会在此按钮前面弹出一个弹出窗口,并且我的自动化脚本无法告诉我该元素已被拦截且不可单击,我有一个向下滚动到该元素的功能,但仍然如此其他元素在前面,有没有办法解决这个阻塞元素?

我可以尝试操作,但这在 FireFox 中不起作用,因为它不受支持,任何想法如何创建一个函数来“圆形”元素以确保没有其他元素阻止它?

【问题讨论】:

    标签: javascript selenium automation protractor


    【解决方案1】:

    首先,直接回答您的问题。使用这个java脚本点击

    /**
    *  Clicks on passed element by injecting js click() in the context of window
    *  @param    {ElementFinder}      $element       Locator of element
    *  @return   {Promise}
    */
    let jsClick = $element => 
            return browser.executeScript(
                'arguments[0].click();', $element.getWebElement()
            );
    

    它的作用 - 当你调用函数并传递一个元素时,它会将 js 代码注入浏览器的控制台。此代码定位您的元素并执行点击。重要的区别是它会点击元素而不管布局或可见性,所以不要在测试中过度使用它,因为它不是真正的用户行为

    另外,什么元素阻挡了你的按钮?我遇到过很多次,第三方集成会弹出一些随机弹出窗口,而您无法控制这些元素。我所做的,它总是有效的,我也在通过在浏览器中注入一些代码来删除该集成。但是它们的代码都不同,因此您需要对此进行研究。例子在这里 https://stackoverflow.com/a/59039308/9150146

    【讨论】:

      【解决方案2】:

      每当弹出窗口出现时,使用 browser.driver.switchTo().alert().dismiss(); 关闭 javascript 弹出窗口,然后继续自动化。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2017-05-26
        • 2014-04-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多