如果有办法在元素变得可见后执行 .click() 。
我的函数链是这样构建的:
this.remote.findByXpath("//div[@data-index='blockContainer']/button[text()='Create new']").then(function(element) {
return element.click().end();
})
有时我得到错误说'元素不可见',是否可以在浏览器中显示元素后执行单击?我知道 Leadfoot 提供 pollUntil 来做类似的事情,但我不想在浏览器端执行 xpath,而不是在运行服务器端之前执行。
为了解决我的问题,我尝试了以下两种方法,但没有帮助:
我试图将 Leadfoot 元素传递给浏览器端脚本并检查它是否可见。但似乎浏览器端代码无法识别前导脚/元素对象。
command.find(...).then(function(element) { return command.then(pollUntil( function(element) { if (element.style.display == 'none') return null; return true; }, [element], 60000, 500)).then(function(el){ }); }).click().end();
还尝试自定义 pollUntil 我自己,但效果不佳
function pollVisible(element, timeout) { var dfd = new Deferred(); var endTime = Number(new Date()) + timeout; (function poll() { element.isDisplayed().then(function (displayed) { if (displayed) { dfd.resolve(); } else if (Number(new Date()) < endTime) { setTimeout(poll, 500); } else { var error = new Error('timed out; final url is ' + url); dfd.reject(error); } }); })(); return dfd.promise; }