如何防止浏览器.驱动程序.睡眠



我有以下规范,它工作正常,但我想防止使用browser.sleep()

it('should go to the item details page', function () {
    browser.get(testOptions.baseUrl+testOptions.cpdmPath+testOptions.itemDetailsForAttachment);
    browser.getCurrentUrl().then(function() {
            //browser.driver.sleep('4000');
            console.log('inside then 4');                
            browser.driver.sleep('4000');
            element(by.css('.md-header-items-container')).isDisplayed().then(function (isVisible) {
                if (isVisible) {
                    // element is visible
                    browser.driver.sleep('4000');
                    element.all(by.repeater('(key, value) in tabList')).count().then(function (numberOfTabs) {
                        //console.log(numberOfTabs);
                    });
                    element.all(by.repeater('(key, value) in tabList')).get(4).click().then(function () {
                        browser.driver.sleep('4000');
                        element(by.css('.hidden-attachment-info-bar')).isDisplayed().then(function (isVisible) {
                            expect(isVisible).to.equal(true);
                        })
                    });
                } else {
                    // element is not visible
                    console.log('is invisible');
                }
            });
    })
});

使用具有硬编码时间间隔的sleep()的常见替代方法是使用 wait()显式等待满足特定条件。例如,等待元素可见:

var EC = protractor.ExpectedConditions;
var elm = element(by.css('.md-header-items-container'));
browser.wait(EC.visibilityOf(elm), 4000);

最后,我让它工作如下:

it('should go to the attachments page and pass waiting time for element', function() {
    browser.get(testOptions.baseUrl+testOptions.cpdmPath+testOptions.itemDetailsForAttachment);
    browser.wait(function() {
        return browser.driver.isElementPresent(cpdmAttachTabPage.notificationBar);
    }, 90000);
   browser.driver.isElementPresent(cpdmAttachTabPage.notificationBar).then(function(isVisible) {
            console.log(isVisible);
            expect(isVisible).to.equal(true);
        })
    })

最新更新