Javascript 量角器:我需要等待组件显示在屏幕上
我遇到了一个问题,我需要等待组件显示在屏幕上,有时组件延迟太久而无法显示。我需要等待某个字段或变量变为真。有人知道怎么做吗Javascript 量角器:我需要等待组件显示在屏幕上,javascript,node.js,jasmine,protractor,Javascript,Node.js,Jasmine,Protractor,我遇到了一个问题,我需要等待组件显示在屏幕上,有时组件延迟太久而无法显示。我需要等待某个字段或变量变为真。有人知道怎么做吗 element(by.id('nextStage-button')).isPresent().then(function (visible) { let i = 0; while (visible !== true){ browser.sleep(2000); console.log("test "+ i++);
element(by.id('nextStage-button')).isPresent().then(function (visible) {
let i = 0;
while (visible !== true){
browser.sleep(2000);
console.log("test "+ i++);
if(visible === true){
break;
}
}
browser.wait()将安排一个命令等待条件保持或承诺得到解决
此函数阻止WebDriver的控制流,而不是javascript运行时。它只会延迟将来的webdriver命令的执行(例如,它会导致量角器在将将来的命令发送到selenium服务器之前等待),并且仅在启用webdriver控制流时
文档链接:
在您的情况下,您希望等待特定元素可见,为此,您应该使用isDisplayed(),因为它将返回一个承诺,该承诺将通过该元素当前在页面上是否可见来解决
await browser.wait(async () => await el.isDisplayed(), DefaultTimeout);
研究使用
你可以这样做:
const EC = protractor.ExpectedConditions;
const nextStageButton = $('#nextStage-button');
browser.wait(EC.visibilityOf(nextStageButton), 3000);
// do whatever you wanted to do once it's visible