首页 > 解决方案 > 如何单击量角器中被阻止的元素?

问题描述

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

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

标签: javascriptseleniumautomationprotractor

解决方案


首先,直接回答你的问题。使用这个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


推荐阅读