首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在protractorjs e2e测试下拉列表中选择选项

如何在protractorjs e2e测试下拉列表中选择选项
EN

Stack Overflow用户
提问于 2013-10-26 05:08:08
回答 33查看 167.1K关注 0票数 125

我正在尝试使用量角器从下拉列表中为angular e2e测试选择一个选项。

以下是select选项的代码片段:

代码语言:javascript
复制
<select id="locregion" class="create_select ng-pristine ng-invalid ng-invalid-required" required="" ng-disabled="organization.id !== undefined" ng-options="o.id as o.name for o in organizations" ng-model="organization.parent_id">
    <option value="?" selected="selected"></option>
    <option value="0">Ranjans Mobile Testing</option>
    <option value="1">BeaverBox Testing</option>
    <option value="2">BadgerBox</option>
    <option value="3">CritterCase</option>
    <option value="4">BoxLox</option>
    <option value="5">BooBoBum</option>
</select>

我试过了:

代码语言:javascript
复制
ptor.findElement(protractor.By.css('select option:1')).click();

这会给出以下错误:

指定的生成信息字符串无效或非法:版本:'2.35.0',版本:'c916b9d',时间:'2013-08-12 15:42:01‘系统信息: os.name:'Mac OS X',os.arch:'x86_64',os.version:'10.9',java.version:'1.6.0_65’驱动程序信息: driver.version:未知

我也尝试过:

代码语言:javascript
复制
ptor.findElement(protractor.By.xpath('/html/body/div[2]/div/div[4]/div/div/div/div[3]/ng-include/div/div[2]/div/div/organization-form/form/div[2]/select/option[3]')).click();

这会给出以下错误:

ElementNotVisibleError:元素当前不可见,因此可能无法与命令持续时间或超时进行交互:9毫秒构建信息:版本:'2.35.0',修订:'c916b9d',时间:'2013-08-12 15:42:01‘系统信息: os.name:'Mac OS X',os.arch:'x86_64',os.version:'10.9',java.version:'1.6.0_65‘会话ID: bdeb8088-d8ad-0f49-aad9-82201c45c63f驱动程序信息: org.openqa.selenium.firefox.FirefoxDriver功能{platform=MAC,acceptSslCerts=true,javascriptEnabled=true,browserName=firefox,rotatable=false,locationContextEnabled=true,version=24.0,cssSelectorsEnabled=true,databaseEnabled=true,handlesAlerts=true,browserConnectionEnabled=true,nativeEvents=false,webStorageEnabled=true,applicationCacheEnabled=false,takesScreenshot=true}

有没有人可以帮我解决这个问题,或者告诉我我可能做错了什么。

EN

回答 33

Stack Overflow用户

回答已采纳

发布于 2013-12-01 11:05:11

我也遇到过类似的问题,最后我写了一个帮助函数来选择下拉值。

我最终决定可以通过选项号进行选择,因此编写了一个方法,该方法接受一个元素和optionNumber,并选择该optionNumber。如果optionNumber为null,则不选择任何内容(使下拉菜单处于未选中状态)。

代码语言:javascript
复制
var selectDropdownbyNum = function ( element, optionNum ) {
  if (optionNum){
    var options = element.all(by.tagName('option'))   
      .then(function(options){
        options[optionNum].click();
      });
  }
};

如果你想要更多细节,我写了一篇博文,它还包括在下拉列表中验证所选选项的文本:http://technpol.wordpress.com/2013/12/01/protractor-and-dropdowns-validation/

票数 91
EN

Stack Overflow用户

发布于 2014-06-17 16:47:50

对我来说就像一个护身符

代码语言:javascript
复制
element(by.cssContainingText('option', 'BeaverBox Testing')).click();
票数 257
EN

Stack Overflow用户

发布于 2015-04-03 08:17:42

是一种优雅的方法,将涉及到创建类似于其他selenium语言绑定提供的开箱即用的抽象(例如,Python或Java中的Select类)。

让我们做一个方便的包装器,并隐藏其中的实现细节:

代码语言:javascript
复制
var SelectWrapper = function(selector) {
    this.webElement = element(selector);
};
SelectWrapper.prototype.getOptions = function() {
    return this.webElement.all(by.tagName('option'));
};
SelectWrapper.prototype.getSelectedOptions = function() {
    return this.webElement.all(by.css('option[selected="selected"]'));
};
SelectWrapper.prototype.selectByValue = function(value) {
    return this.webElement.all(by.css('option[value="' + value + '"]')).click();
};
SelectWrapper.prototype.selectByPartialText = function(text) {
    return this.webElement.all(by.cssContainingText('option', text)).click();   
};
SelectWrapper.prototype.selectByText = function(text) {
    return this.webElement.all(by.xpath('option[.="' + text + '"]')).click();   
};

module.exports = SelectWrapper;

使用示例(注意它的可读性和易用性):

代码语言:javascript
复制
var SelectWrapper  = require('select-wrapper');
var mySelect = new SelectWrapper(by.id('locregion'));

# select an option by value
mySelect.selectByValue('4');

# select by visible text
mySelect.selectByText('BoxLox');

取自以下主题的解决方案:Select -> option abstraction

仅供参考,创建了一个功能请求:Select -> option abstraction

票数 32
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19599450

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档