如何使用量角器查找元素是否可见
How to find whether an element is Visible or not using protractor
在页面上需要检查元素是否可见。
元素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>
我需要检查元素 'Create user' 是否可见。如果一个元素被隐藏,那么父元素 class 将是“ng-hide”。
我尝试了很多方法来检查元素,但都没有成功。
//'lid'有一个自定义方法,我们用它来识别元素。
期望(util.isCreateUserTabDisplayed()).toBe(假);
解决方案一:
“isCreateUserTabDisplayed()”的定义
this.isCreateUserTabDisplayed = function()
{
var createUserTab = elmenet(by.lid("users-submenu-create-user-tab"));
return createUserTab.isPresent()
}
isPresent() 返回“true”,因为元素存在于 DOM.
方案二:
想到通过isDisplayed()函数进行Verify
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”不是函数
方案三:
想通过获取父元素 class 变量来验证并验证它应该是 '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”不是函数
请任何人帮忙。
我注意到 Whosebug 上出现了很多关于量角器的问题,因为用户倾向于将事情复杂化,而解决方案可能相当简单
我强烈建议始终先从量角器文档开始,它包含您需要的一切示例
在你的情况下 isDisplayed() 就是你要找的
this.isCreateUserTabDisplayed = function() {
var createUserTab = elmenet(by.lid("users-submenu-create-user-tab"));
return createUserTab.isDisplayed()
}
// and use like this
expect(await this.isCreateUserTabDisplayed()).toBe(true);
// or if you don't know how to use await/async, which I recommend to learn too
this.isCreateUserTabDisplayed().then(function(result){
expect(result).toBe(true);
})
在页面上需要检查元素是否可见。
元素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>
我需要检查元素 'Create user' 是否可见。如果一个元素被隐藏,那么父元素 class 将是“ng-hide”。
我尝试了很多方法来检查元素,但都没有成功。
//'lid'有一个自定义方法,我们用它来识别元素。
期望(util.isCreateUserTabDisplayed()).toBe(假);
解决方案一: “isCreateUserTabDisplayed()”的定义
this.isCreateUserTabDisplayed = function()
{
var createUserTab = elmenet(by.lid("users-submenu-create-user-tab"));
return createUserTab.isPresent()
}
isPresent() 返回“true”,因为元素存在于 DOM.
方案二:
想到通过isDisplayed()函数进行Verify
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”不是函数
方案三: 想通过获取父元素 class 变量来验证并验证它应该是 '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”不是函数
请任何人帮忙。
我注意到 Whosebug 上出现了很多关于量角器的问题,因为用户倾向于将事情复杂化,而解决方案可能相当简单
我强烈建议始终先从量角器文档开始,它包含您需要的一切示例
在你的情况下 isDisplayed() 就是你要找的
this.isCreateUserTabDisplayed = function() {
var createUserTab = elmenet(by.lid("users-submenu-create-user-tab"));
return createUserTab.isDisplayed()
}
// and use like this
expect(await this.isCreateUserTabDisplayed()).toBe(true);
// or if you don't know how to use await/async, which I recommend to learn too
this.isCreateUserTabDisplayed().then(function(result){
expect(result).toBe(true);
})