【发布时间】:2020-06-25 10:03:48
【问题描述】:
在页面上需要检查一个元素是否可见。
元素HTML代码如下:
<li ng-class="{active: (subview == 'add')}" ng-show="iSU || dp.ua" class="ng-hide">
<a href="#/setup/users/all/add/" lid="users-submenu-create-user-tab" class="ng-binding">
Create user
</a>
</li>
我需要检查元素“创建用户”是否可见。如果一个元素被隐藏,那么父类将是“ng-hide”。
我尝试了很多方法来检查元素,但都没有成功。
//'lid'有一个自定义方法,我们用它来识别元素。
expect(util.isCreateUserTabDisplayed()).toBe(false);
解决方案 1: “isCreateUserTabDisplayed()”的定义
this.isCreateUserTabDisplayed = function()
{
var createUserTab = elmenet(by.lid("users-submenu-create-user-tab"));
return createUserTab.isPresent()
}
isPresent() 返回“true”,因为元素存在于 DOM 中。
解决方案 2:
通过isDisplayed()函数验证的思路
this.isCreateUserTabDisplayed = function()
{
var createUserTab = elmenet(by.lid("users-submenu-create-user-tab")).getWebElement();
var createUserParentEle = createUserTab.getDriver();
createUserParentEle.isDisplayed().then(function(result){
return result;
});
}
收到错误“createUserParentEle.isDisplayed”不是函数
解决方案 3: 想通过获取父元素类变量来验证并验证它应该是'ng-hide'
this.isCreateUserTabDisplayed = function()
{
var createUserTab = elmenet(by.lid("users-submenu-create-user-tab")).getWebElement();
var createUserParentEle = createUserTab.getDriver();
return createUserParentEle.getAttribute('class').then(function(attrValue){
if( attrValue == 'ng-hide')
return false
else
return true;
});
}
收到错误“createUserParentEle.getAttribute”不是函数
请任何人帮忙。
【问题讨论】:
标签: javascript protractor