如何检查 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/