当前位置: 首页 > 知识库问答 >
问题:

AngularJS量角器如何选择下拉选项基于其文本不是值

扈俊健
2023-03-14

我想通过它的文本而不是下拉框中的值来单击项目。

我发现了这个很棒的帖子:https://coderwall.com/p/tjx5zg但它并没有像预期的那样工作,搜索在找到匹配后永远继续,它没有点击该项目,

如果有人有更好的例子(一个工作的例子)或者可以修复这个代码并使其工作,

我将apperciate。

这是Dan Haller在帖子中使用的密码(版权归他所有)

function selectOption(selector, item){
    var selectList, desiredOption;

    selectList = this.findElement(selector);
    selectList.click();

    selectList.findElements(protractor.By.tagName('option'))
        .then(function findMatchingOption(options){
            options.some(function(option){
                option.getText().then(function doesOptionMatch(text){
                    if (item === text){
                        desiredOption = option;
                        return true;
                    }
                });
            });
        })
        .then(function clickOption(){
            if (desiredOption){
                desiredOption.click();
            }
        });
    }

这是一个选择项功能,我可以这样使用:

var browser = protractor.getInstance();
browser.selectOption = selectOption.bind(browser);
browser.selectOption(protractor.By.id('my-dropdown'), 'My Value');

共有3个答案

徐飞龙
2023-03-14

如果要按值选择选项,可以使用:

var select = element.one(by.model('selectData'));
select.$('[label="Option 1"]').click();
齐磊
2023-03-14

此功能选择选择框的第三个选项。

function selectDropdownByNumber(element, index, milliseconds) {
    element.findElements(by.tagName('option'))
      .then(function(options) {
        options[index].click();
      });
    if (typeof milliseconds !== 'undefined') {
      browser.sleep(milliseconds);
   }
}
var mySelect = $('#my-dropdown');
selectDropdownByNumber(mySelect, 2);

更多信息可在此处找到-http://qainsight.blogspot.fr/2014/04/select-dropdown-value-in-protractor-js.html

柳修平
2023-03-14

这个问题类似于:如何在下拉量角器e2e测试中选择选项

只要使用最新版本的量角器,就可以执行以下操作:

element(by.cssContainingText('option', 'BeaverBox Testing')).click();

如果你想按数字点击,你可以这样做:

var selectDropdownbyNum = function ( element, optionNum ) {
  if (optionNum){
    var options = element.findElements(by.tagName('option'))   
      .then(function(options){
        options[optionNum].click();
      });
  }
};
 类似资料:
  • 我正在尝试编写一些相当基本的代码,但多年来没有接触过JavaScript,我真的不确定最好的方法是什么。 目标:有一个42个竞技场部分数字的下拉列表,当选择这些数字时,将根据该数字显示“红色”或“黑色”。为了提供过多信息,部分编号是: 黑色:103, 105, 107, 111, 113, 115, 119, 121, 123, 127, 129, 131, 201, 203, 205, 207,

  • 我正在努力尝试从以下下拉菜单中选择一个名为“某些产品”的产品。'id="s2id_autogen81"'是新的ID元素,我使用该ID来抓取项目,但它被更改为这个自动生成值,我不确定要使用量角器抓取什么。 从下拉菜单中选择它 从选择后的下拉列表中

  • 我想计算选择属性中的选项,但我的测试失败了,这是我的规范: 它给了我错误: C:\wamp\www\First-angular-App

  • 问题内容: Selenium Select 类具有3种不同的选项选择方法: selectByIndex selectByValue selectByVisibleText 现在,我遇到一种情况,我想通过一些 部分 显示在选项可见文本之一中的文本来选择一个选项(不想让自己暴露在整个文本中)。 例如: 我只想通过提供“ DOLLAR”来选择此选项,例如: 您将如何有效地实施它? 问题答案: 您可以尝试

  • 问题内容: Selenium Select 类具有3种不同的选项选择方法: selectByIndex selectByValue selectByVisibleText 现在,我遇到一种情况,我想按 部分 显示在选项可见文本之一中的某些文本选择一个选项(不想让自己暴露于整个文本中)。 例如: 我只想通过提供“ DOLLAR”来选择此选项,例如: 您将如何有效实施它? 问题答案: 您可以尝试这样的

  • 我正在尝试使用Capybara(2.1.0)从下拉菜单中选择一个项目。 我想通过数字来选择(意思是选择第二个、第三个等选项)。 我疯狂地搜索了所有的东西,但都没有结果。 但会导致以下错误: 那么我如何从下拉(使用Capybara)中选择第一个、第二个、第三个等选项呢?