如何在selenium webdriverJS中检查元素是否真正可点击?
我知道我可以检查元素是否显示以及元素是否已启用。但是,如果元素被某些其他元素隐藏(例如,通过模态弹出窗口),则无法单击该元素。在这种情况下,我希望webdriver等到元素真正可点击。
怎么做?谢谢你的帮助
答案 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);
});
});
};