javascript - 如何单击量角器中被阻止的元素?
问题描述
我试图单击一个按钮,但有时会在此按钮前面弹出一个弹出窗口,并且我的自动化脚本未能告诉我该元素被拦截且不可单击,我有一个向下滚动到该元素的功能,但仍然这个其他元素得到在前面,有没有办法解决这个阻塞元素?
我可以尝试操作,但这在 FireFox 中不起作用,因为在 protactor 中它不受支持,任何想法如何创建一个函数来“Round”元素以确保没有其他元素阻止它?
解决方案
首先,直接回答你的问题。使用这个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
推荐阅读
- sql - SQL 为什么我收到无效标识符错误?
- r-exams - 黑板不导入 Blackboard.zip
- python - 在 VScode 中跟踪 python 警告
- typescript - 如何根据类方法返回类型声明参数类型?
- reactjs - 如何避免来自 Apollo useMutation 钩子的解构突变?
- angular - 有没有办法在 Angular 中设置模块级 css?
- function - 通过引用传递参数 TCL 过程
- laravel - Laravel Jetstream 无法安装并返回以下错误
- c - 使用“x-termial-emulaor -e”执行子进程时出现错误的文件描述符错误 - C 语言
- craftcms - CraftCMS - 在内容类型中显示条目字段的类别