2015-09-30 55 views
0

我正在測試基於服務調用和http get的響應填充3個複選框的場景。如何在執行量角器e2e測試之前等待下拉人口?

我遇到的是當我運行測試protractor conf.js下拉菜單尚未填充來自http get響應的響應,所以當我嘗試測試任何瀏覽器停止並且測試失敗時。

有沒有辦法讓量角器可以在運行測試之前對這些下拉列表進行填充?

conf.js: 
// An example configuration file. 
exports.config = { 
    //directConnect: true, 

    // Capabilities to be passed to the webdriver instance. 
    capabilities: { 
    'browserName': 'chrome' 
    }, 

    // Framework to use. Jasmine 2 is recommended. 
    framework: 'jasmine2', 

    // Spec patterns are relative to the current working directly when 
    // protractor is called. 
    specs: ['e2e/*.js'], 

    baseUrl: 'http://localhost:4000/', 


    // Options to be passed to Jasmine. 
    jasmineNodeOpts: { 
    defaultTimeoutInterval: 30000 
    } 
}; 

test file: 

var select = element(by.model('make')); 
console.log(select); 
select.$('[value="acura"]').click(); 

失敗上的click事件,因爲當這個測試運行選擇沒有選項元素的選擇會從一個JSON HTTP GET響應填充。

在此先感謝!

回答

0

你可以嘗試使用下面的方法;在調用點擊之前。

browser.waitForAngular(); 
+0

沒有幫助,我曾試圖之前 – pj013

+0

訪問的選擇應該通過量角器完成,使用 'browser.driver.isElementPresent(elementToFind)。然後(函數(isPresent){ 元素(elementToFind)。單擊 }' –

0

使用browser.wait() -

browser.wait(function(){ 
    return elementPresent.isPresent(); 
    }).then(function(){ 
     element.click(); 
}) 
0

使用ExpectedConditions一個期望下拉來填充用量角器的內置wait()方法。以下是如何 -

var select = element(by.model('make')); 
browser.wait(protractor.ExpectedConditions.presenceOf(select.$('[value="acura"]')), 10000) 
.then(function(){ 
    select.$('[value="acura"]').click(); 
}); 

希望它有幫助。

+0

這就是我得到的:消息: 失敗:10004ms後等待超時 - 任何想法 – pj013

+0

@ jp310你可以更新下拉菜單的html代碼嗎?還有多少時間才能填充? –

相關問題