以下片段成功激活并选择了select2小部件中的第一个选项,它允许通过网络加载选项。
'select2'小部件存在几个问题 - 关于量角器E2E测试 - 这个片段涉及。评论解释得很好。
/**
* @param {string} select2Locator // CSS selector of select2 container
* @param {string} opt_query // an optional Query string
*/
function select2First(select2Locator, opt_query){
// the 'a' element inside the select2 will receive the 'mousedown' event
var selector = select2Locator + ' a.select2-choice';
// Locator for the select2 options
var options = element.all(by.css('.select2-results-dept-0'));
// select2 doesn't activate on click
// and protractor doesn't have a direct mousedown method on 'ElementFinder'.
browser.driver.executeScript('$(arguments["0"]).mousedown();', (selector));
if(opt_query){
browser.driver.switchTo().activeElement().sendKeys(opt_query);
// select2 can fetch options from over a network
// so we confirm that all pending network requests are resolved after typing the query
browser.driver.wait(function(){
return browser.driver.executeScript('return $.active === 0;');
}, 2000);
}
// makes sure all the options are rendered
browser.driver.wait(function(){
return options.count().then(function(count){
return 0 < count;
});
}, 2000);
options.first().click();
};
在你提供的情况下,您会使用这样的:
select2First('div#s2id_person', 'ip');
感谢,将测试时,我得到一个机会 – 2014-11-06 10:44:24
为我工作。谢谢!注意自己:不要再使用角度的应用程序select2 :) – inolasco 2015-04-21 16:07:19
我得到'UnknownError:未知的错误:不能使用此解决方案聚焦元素'。 – user2388556 2015-05-07 23:43:02