2015-09-30 53 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代码吗?还有多少时间才能填充? –

相关问题