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

量角器下拉列表元素e2e测试

章海
2023-03-14

我是新的量角器,我正在执行一些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

这个错误怎么可能?

提前感谢您的帮助。

共有3个答案

柴砚文
2023-03-14

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

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

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

希望这有帮助

翟奇逸
2023-03-14

我也在做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();
        });
    };

我希望这有帮助。

壤驷阳冰
2023-03-14

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

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

  var e = element(by.id('Develop');
  var strUser = element(by.css('#Develop option:2')).getAttribute('value');
});

这可能会帮助您:

  • 从下拉列表中选择选项,
  • 如何在下拉式量角器JS e2e测试中选择选项

我还建议您在开始之前阅读量角器文档。

 类似资料:
  • 我正在尝试让我的量角器端到端测试与下拉菜单进行交互。 在我测试的页面中,我们有一个国家下拉列表。下拉列表包含4个可选选项“?”其中空白,然后是美国、英国和加拿大。 我显然没有在我的PO文件中正确调用元素,因为参数化不起作用。测试“通过”,但是当您观察正在驱动的内容时,选择的国家/地区是“?”(这是默认的)。因此,测试是导航到页面,选择元素,而不是实际单击我想要的选项。 据我所知,我需要以某种方式获

  • 有很多方法可以做到这一点,我已经尝试了很多方法,但是在做自动测试时,我不能从下拉菜单中选择一个项目。 “选择”是出现在下拉菜单中的默认选择,我希望自动化测试选择其中一个元素,不管是哪个 这是HTML代码 这是我的量角器档案 我尝试过使用by.cssElement、by.xpath等。当我运行上面的代码时,我没有得到任何错误,但它也没有选择任何元素。谢谢

  • 我的页面上有一个下拉菜单。我测试量角器的目标是单击此下拉菜单中的一个选项,并让量角器检查结果: 我的量角器测试看起来像: 如果你想知道的话,ptor.ignoreSynchronization是启用的,因为我的网页不断地轮询后端的一些更新。 量角器在我运行测试时抛出以下错误: 我不明白这个错误是关于什么的。这个元素肯定是可见的,因为当我查看页面的源代码时,我可以在DOM结构中看到它。 善意的忠告

  • 我有一个带有输入框和用户界面选择下拉列表的表单,在ng-blur事件中,我调用了一个方法来自动选择所有三个用户界面选择中的选项。当我使用量角器e2e测试执行此操作时,它不会等待用户界面选择发生并提交表单,这会引发异常,因为它没有找到只有在提交包含所有必需字段的表单后才会出现的元素。我试过这样browser.wait 它正在抛出异常。

  • 问题内容: 我目前正在使用Protractor为不起眼的Angular应用编写一些e2e测试。 我的应用程序运行良好,单元测试通过了所有测试,也使用了e2e …直到这一项: appE2ESpec.js 这就是我编写测试的方式,但是, 问题是: items.count()返回一个promise, 我知道 ,但是我无法迫使Protractor解决它。所以我得到这个: 我尝试过的 但得到的最终结果相同.

  • 我有一个下拉列表,我使用它来允许用户建立到后端的查询参数。 然后,用户将单击一个按钮,我将访问用户在下拉列表中设置的值,以调用后端endpoint。 任何帮助或提示都是非常欢迎的。