gpt4 book ai didi

angularjs - Protractor 如何测试select2

转载 作者:行者123 更新时间:2023-12-01 08:57:23 24 4
gpt4 key购买 nike

我有一个 select2 下拉菜单,您需要先输入 2 个字符,然后选择您的项目。我无法用 Protractor 对此进行测试。

var select2 = element(by.css('div#s2id_person'));
select2.click();
select2.sendKeys('ip');
select2.sendKeys(protractor.Key.ENTER);

当您尝试 sendKeys 时,出现以下错误:无法聚焦元素。

最佳答案

以下代码片段成功激活并选择了 select2 小部件中的第一个选项,它允许通过网络加载选项。

“select2”小部件存在几个问题 - 关于 Protractor 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');

关于angularjs - Protractor 如何测试select2,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26504623/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com