作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在编写一个用于测试 AngularJS 网络应用程序的中间件框架,我希望能够等待满足某些条件,然后再继续测试中的另一个操作。我是 Protractor 的新手,根据我在他们的文档和其他论坛中发现的内容,有几种不同的方法可以使用 browser.driver.wait
或使用 的类似技术来做到这一点包含此 answer 的条件
或 promise
.
我具体要实现的是在我的框架中遵循页面对象模型设计,并允许每个页面提供自己的功能来确定该页面是否在浏览器中可见。为此,我最终编写了如下页面对象:
var pages = {
home: {
name: 'home',
url: server + '/#/home',
title: 'Home',
isVisible: until.titleIs(this.title)
},
...
}
有两个问题我正在努力解决并解决:
until
未定义。我还没有找到使用这个对象的正确方法,我的所有搜索都导致了等待元素可见或预期条件为真的替代方法。我怎样才能直接访问这个对象?而且,这是否被认为是糟糕/过时的设计?假设我找到了一种直接使用 until
对象的方法,我可以在 Protractor 源代码中看到 until.titleIs()
函数返回一个Condition
,所以我的下一个问题是在等待结束(或超时)后如何使用此 Condition
对象获取其 bool 结果?对于某些特殊情况,我需要执行此操作,例如:
var condition = until.titleIs('some title');
var result = browser.wait(condition, timeout).then(function(res) { return res; });
if (result)
// do something
else
// do another thing
非常感谢您对此的帮助!
最佳答案
until
是 protractor.ExpectedConditions
目的。我会在全局范围内定义它,将以下内容放入配置中的 onPrepare()
函数中:
onPrepare: function () {
global.until = protractor.ExpectedConditions;
},
关于你的第二个问题,我会让 isVisible
成为一个函数,它会返回一个 promise :
isVisible: function () {
return browser.wait(until.titleIs(this.title), 5000).then(function () {
return true;
},
function () {
return false;
});
},
然后,您可以在测试中期待它:
expect(myPageObject.isVisible()).toBe(true);
关于javascript - 如何在 Protractor 中直接访问 'until' 对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34819695/
我是一名优秀的程序员,十分优秀!