Javascript 量角器下拉列表elemente e2e测试

Javascript 量角器下拉列表elemente e2e测试,javascript,protractor,angularjs-e2e,Javascript,Protractor,Angularjs E2e,我是一个新的量角器,我正在执行一些e2e测试,在最后一个测试中我遇到了问题,当我尝试调用下拉列表并选择其中一个选项时 这是我的代码: it('filter', function() { console.log('test log'); var e = document.getElementById('Develop'); var strUser = e.options[e.selectedIndex].value; e.selectedIndex = 2; }); 我每次得

我是一个新的量角器,我正在执行一些e2e测试,在最后一个测试中我遇到了问题,当我尝试调用下拉列表并选择其中一个选项时

这是我的代码:

it('filter', function() {
  console.log('test log');

  var e = document.getElementById('Develop');
  var strUser = e.options[e.selectedIndex].value;

  e.selectedIndex = 2;
});
我每次得到的
referenceError
是:

document is not defined
这个错误怎么可能发生


提前感谢您的帮助。

在量角器规格中,您应该使用
元素
定位DOM元素:

it('filter', function() {
  console.log('test log');

  var e = element(by.id('Develop');
  var strUser = element(by.css('#Develop option:2')).getAttribute('value');
});
这可能会帮助您:

  • ,

我还建议您在开始之前阅读。

我也在进行e2e测试,我有几个功能可以选择下拉选项:

按值选择下拉列表

this.selectDropdownByValue = function (dropdownElement, value) {
        return this.selectDropdownByAttribute(dropdownElement, 'value', value);
};
按索引选择下拉列表:

this.selectDropdownByIndex = function (dropdownElement, index) {
        dropdownElement.click();
        dropdownElement.all(by.css('option')).get(index).click();
};
按部分标签选择下拉列表:

this.selectDropdownByPartialLabel = function (dropdownElement, partialLabel) {
        return this.selectDropdownByAttribute(dropdownElement, 'label', partialLabel, true);
};
按标签选择下拉列表:

this.selectDropdownByLabel = function (dropdownElement, label) {
        return this.selectDropdownByAttribute(dropdownElement, 'label', label);
    };
每个下拉函数中使用的函数为:

this.selectDropdownByAttribute = function (dropdownElement, attribute, value, partial, index) {
        var pathModifier = '';

        if (typeof index === 'undefined') {
            index = 0;
        }

        if (typeof partial === 'undefined') {
            partial = false;
        }

        if (partial) {
            pathModifier = '*';
        }

        dropdownElement.click().then(function () {
            dropdownElement.all(by.css('option[' + attribute + pathModifier + '="' + value + '"]')).get(index).click();
        });
    };

我希望这能有所帮助。

我在尝试与下拉列表交互时遇到了同样的问题,我设法使用了这种格式,它帮助我选择了所需的确切下拉列表元素

元素(by.model('model.name')).click().element(by.xpath('xpath')).click()

所以我基本上放在下拉列表的位置,单击它,然后直接通过它的xpath定位下拉列表元素,并在一行中单击它

希望这有帮助