Angularjs 量角器如何测试select2
我有一个select2下拉列表,您需要首先输入2个字符,然后选择您的项目。我不能用量角器测试这个Angularjs 量角器如何测试select2,angularjs,protractor,ui-select2,Angularjs,Protractor,Ui Select2,我有一个select2下拉列表,您需要首先输入2个字符,然后选择您的项目。我不能用量角器测试这个 var select2 = element(by.css('div#s2id_person')); select2.click(); select2.sendKeys('ip'); select2.sendKeys(protractor.Key.ENTER); 下面是一个错误,说明在尝试发送密钥时无法聚焦元素。以下代码段成功激活并选择select2小部件中的第一个选项,它允许通过网络加载选项 “s
var select2 = element(by.css('div#s2id_person'));
select2.click();
select2.sendKeys('ip');
select2.sendKeys(protractor.Key.ENTER);
下面是一个错误,说明在尝试发送密钥时无法聚焦元素。以下代码段成功激活并选择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();
};
谢谢,当我有机会的时候我会测试的。谢谢self注意:永远不要在angular应用程序上再次使用select2:)我遇到了
未知错误:未知错误:无法使用此解决方案聚焦元素
。这条神奇的线(来自上面的代码)使我的情况下一切正常:browser.driver.switch to().activeElement().sendKeys('text')代码>-这就是我所需要的(就我而言)。
select2First('div#s2id_person', 'ip');