javascript - Node Selenium WebdriverJS - 如何检查元素是否真正可点击?

标签 javascript node.js selenium-webdriver webdriver

如何检查 selenium webdriverJS 中的元素是否真正可点击?

我知道我可以检查元素是否显示以及元素是否启用。但是,如果该元素被其他元素隐藏,例如被模式弹出窗口隐藏,则无法单击它。在这种情况下,我希望 webdriver 等待该元素真正可点击。

如何做到这一点?感谢您的帮助

最佳答案

我遇到了这个问题,最终找到了解决方案。即使我正在使用 wd而不是selenium-webdriver ,我认为我的解决方案对于那些使用 Node.js 处理 selenium 的人来说可能很有用。

基本上,我将通用 waitFor 与断言器一起使用,以继续尝试单击,直到成功或超时。这是代码

使用

browser
    .elementById('some-button')
    .clickWhenClickable()

方法.js

var wd = require('wd');
var asserters = require('./asserters');
wd.addElementPromiseMethod('clickWhenClickable', function clickWhenClickable (timeout, pollFreq) {
  return this.browser.waitFor(asserters.elementHasBeenClicked(this), timeout, pollFreq);
});

断言者.js

var wd = require('wd');
var Asserter = wd.Asserter;

exports.elementHasBeenClicked = function elementHasBeenClicked (el) {
  return new Asserter(function hasBeenClicked (browser, cb) {
    el.click(function(err) {
      cb(null, !err, null);
    });
  });
};

关于javascript - Node Selenium WebdriverJS - 如何检查元素是否真正可点击?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23029078/

相关文章:

java - 如何在 java 中为 Selenium webdriver 编写我自己的自定义定位器?

javascript - 当响应json对象数据计数为零时,ajax成功回调函数重定向到错误回调

javascript - Ajax 具有多个 url feed

javascript - 使用 futon map 程序在 couchdb 中加入两个不同的文档?

javascript - jquery:加载特定 div 时触发函数?

node.js - 如何自定义Hapi.js访问日志?

java - 如何使用 Selenium WebDriver 将 HTML5 Canvas 上的图像元素与存储在硬盘驱动器上的另一个图像进行比较?

node.js - 在给定繁忙时间数组的情况下查找下一个空闲时间

javascript - 如何使 jshint 缩进选项起作用

java - Webelement 列表并仅选择一个