如何使用量角器选择下拉菜单?

时间:2018-11-27 13:41:17

标签: protractor

任何人都可以帮助我如何选择量角器吗?

页面目标代码

function selectDropdownbyNum(element, optionNum) {
        if (optionNum) {
            element.all(by.tagName('option')).then(function(options) {
                browser.sleep('5000');
                options[optionNum].click();
                console.log('Desired value selected');
            });
        }
    }

var pageName= function(){
this.selectTier = async function(){
        var Tiers = element(by.xpath(/*element value*/));
        console.log('select silver method');
        browser.sleep(5000);
        selectDropdownbyNum(Tiers,2);
        console.log('value selected');
    };
};
module.exports = new pageName();

规格如下

it('select Silver Tier',async function(){
      browser.ignoreSynchronization = true;
      console.log('Executing silver tier selection test case');
      await pageName.selectTier()
    });

我已经尝试了上面的代码。我可以打印下拉菜单的所有值,但是无法单击。

他们在上面的代码中有任何错误。我可以打印“ Desired value selected”。但是没有选择价值

3 个答案:

答案 0 :(得分:0)

我还没有测试它,但是我想这是因为您在for循环中使用了嵌套的promise。 promise的性质是异步的,并且for循环是同步的,这导致循环完全响起,第一个items[i].getText().then的诺言得到解决,这就是您的点击未成功的原因。如果您不需要知道选项名称,则只需删除嵌套的承诺items[i].getText(),然后在循环中执行单击即可。

答案 1 :(得分:0)

尝试:

var Tiers = element(by.xpath(dropDownValue));
Tiers.click();
selectDropdownbyNum(element, optionNum) {
    if (optionNum) {
        element.all(by.tagName('option')).then(function(options) {
            options[optionNum].click();
        });
    }
}
selectDropdownbyNum(Tiers,4)

注意: 避免使用Xpath示例,请使用:

element(by.css('select[formcontrolname="any value according to situation"]'));

答案 2 :(得分:0)

可能会帮助您选择选项

element(by.cssContainingText('option','Option value'))。click();

element(by.id('id')).sendKeys("Values from option");

这对我有用