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

时间:2014-04-12 10:22:48

标签: javascript node.js selenium-webdriver webdriver

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

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

怎么做?谢谢你的帮助

1 个答案:

答案 0 :(得分:1)

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

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

使用

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

methods.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);
});

asserters.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);
    });
  });
};