在我的网络应用程序中,注销链接仅在用户登录后显示 - 登录页面上不存在。
在我的量角器测试中,我想确保用户已登录 - 这意味着在我的第一次测试中,我必须登录。要检查用户是否已登录或需要登录,我想要检查是否存在注销链接。
我不想使用expect
执行此操作,因为页面上没有注销链接是完全可以接受的,这只是意味着我必须登录。
我正在寻找的是一种在我的测试中实现if
场景的方法(在beforeEach
函数中) - 伪代码:
if (!signOut.isPresent()) {
login();
}
到目前为止,我还没有找到一种简单的方法 - 在页面的DOM中对项目的存在进行的所有检查似乎都依赖于expect
,当项目不是时,它会抛出异常出现在页面上。
有一种简单的方法吗?
答案 0 :(得分:1)
你可能只是抓住了例外。
或者使用findElements并检查返回的元素列表是否为空,这意味着该元素不存在。
(不确定第二个解决方案是因为我不知道Protractor,但是findElements就是你在Java中使用的那个)
答案 1 :(得分:0)
@ alb-i986的回答让我走上正轨。在查看findElement
API之后,我找到了两个关于如何为此函数执行错误处理的参考:
Protractor从findElement
函数返回 promise ,并且promise then
函数(在解析了promise后调用)需要两次回调参数:
利用第二个(可选)回调,您可以决定处理或忽略错误:
protractor.getInstance().findElement(by.css(".signout-button"))
.then(function(element) {
// The element was found on the page - click it.
element.click();
}, function(error) {
// Sign out button is not present - handle the error or ignore it
});