如何使用Angularjs在量角器中选择可见元素

杰夫

我有一个SPA,其中多个div具有相同的类。我希望量角器选择可见的div并单击它。我一直在获取Failed: element not visible其中的信息,可以相信它获得了不在此特定页面上的某些元素(也许?)。我也得到WARNING - more than one element found for locator By.cssSelector('.myDiv') - the first result will be used了让我觉得不是单击可见的按钮,而是单击不可见的按钮。

这是我的规格:

describe('User actions', function () {
    it("should be able to click a my div.", function () {
    var myDiv = element(by.css('.myDiv'));
    myDiv.click();

    // some expect... haven't gotten this far yet.
});

如何选择可见的.myDiv并单击它?

用户2020347

使用angular时,隐藏同一层html的许多层是很普遍的,但是在整个html页面中,要早于您要使用的visible元素。

对于常规调试,将站点打开到期望量角器测试所处的位置,然后打开html并在html中搜索量角器测试正在搜索的元素。请注意它是否可见以及其整体位置。

考虑是否要为页面的不同区域添加标签,该元素可以在其中显示,然后使用父选择器和子选择器来获取所需的标记。

您还可以使用它来选择第一个可见元素:

// Takes a protractor webelement and returns the first displayed version
// Ex:
// var coolBox = $('.coolBox');
// var visibleCoolBox = getFirstVisibleProtractorElement(coolBox);
this.getFirstVisibleProtractorElement = function(selector){
    var allElementsOfSelector = element.all(by.css(selector.locator().value));
    return allElementsOfSelector.filter(function(elem) {
        return elem.isDisplayed().then(function(displayedElement){
             return displayedElement;
        });
    }).first();
};

传入您想要的任何元素,它将使用定位器并获得它的第一个可见版本。您也可以删除.first()部分以返回要使用的可见元素数组。

编辑

为了使用它,我将举一个量角器+茉莉花的例子。考虑到页面上有任意数量的所需元素,并且至少有一个可见元素,我认为这应该可行。但是,这太过头了,所以我可能在某个地方犯了一个错误。

example_spec.js

var examplePage = require('./example_page.js');

describe('Extracting visible elements', function(){
    it('A visible element can be extracted', function(){
        expect(examplePage.isACoolBoxVisible()).toBeTruthy('Error: No visible CoolBoxes');
    });
});

example_page.js

var protractorUtils = require('./protractor_utils.js');

module.exports = new function(){
    var elements = {
        coolBox: $('.coolBox')
    };

    this.getVisibleCoolBox = function(){
        return protractorUtils.getFirstVisibleProtractorElement(elements.coolBox);
    };

    this.isACoolBoxVisible = function(){
        return getVisibleCoolBox.isDisplayed();
    };
};

protractor_utils.js

module.exports = new  function(){
    this.getFirstVisibleProtractorElement = function(selector){
        var allElementsOfSelector = element.all(by.css(selector.locator().value));
        return allElementsOfSelector.filter(function(elem) {
            return elem.isDisplayed().then(function(displayedElement){
                 return displayedElement;
            });
        }).first();
    };
};

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何使用量角器检查元素是否可见?

如何使用量角器将元素的可见性测试到下拉滚动中?

量角器元素不可见的输入字段

量角器断言元素不可见

量角器:识别不可见元素。

如何使用量角器选择组件元素?

量角器在下拉菜单中选择元素

无法在量角器的下拉列表中选择隐藏的元素

如何在量角器的ng-autocomplete中选择元素?

如何在量角器中选择具有多个类的元素?

使用量角器在列表中选择第二个锚元素

无法在使用量角器的搜索中选择特定结果-AngularJS

如何在量角器中使用formcontrolname从下拉列表中选择值?

如何使用 TypeScript 从量角器的自动完成下拉列表中选择项目?

量角器-下拉元素不可见(自动完成下拉)

isDisplayed对于量角器中的可见元素返回false

量角器-如何选择高度嵌套的下拉元素?

量角器:无法使用by.deepCss('input')在阴影DOM(聚合物)中选择输入元素

量角器-$ http调用后在转发器中选择元素

在使用量角器元素函数选择的元素上使用 then() 后,黄瓜量角器超时

如何在滚动列表中选择可见元素

如何使用 mocha、chai 和量角器等待元素

如何使用量角器访问SVG元素

量角器-如何在元素可见的情况下添加条件,因此请跳过此测试用例,否则请执行以下操作

如何使用量角器测试angularjs应用

在不通过量角器测试的情况下捕获错误(等待元素可见)

量角器-存在但不可见的字段-元素当前不可交互并且不能被操纵

Angularjs量角器:有效选择器,用于排除嵌套元素

量角器:如何访问兄弟元素?