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