如何直接在 Protractor 中访问 'until' 对象?
How can I access the 'until' object directly in Protractor?
我正在编写一个用于测试 AngularJS 网络应用程序的中间件框架,我希望能够等待满足某些条件,然后再继续我的测试中的另一个操作。我是 Protractor 的新手,根据我在他们的文档和其他论坛中发现的内容,有几种不同的方法可以使用 browser.driver.wait
或使用 Condition
或 [=15 的类似技术来做到这一点=] 包括这个 answer.
我具体要实现的是在我的框架中遵循页面对象模型设计,让每个页面都提供自己的功能来确定该页面是否在浏览器中可见。为此,我最终编写了如下页面对象:
var pages = {
home: {
name: 'home',
url: server + '/#/home',
title: 'Home',
isVisible: until.titleIs(this.title)
},
...
}
有两个问题我正在努力解决并解决:
- 首先,我收到一条错误消息,指出
until
未定义。我还没有找到使用这个对象的正确方法,我的所有搜索都导致了等待元素可见或预期条件为真的替代方法。我怎样才能直接访问这个对象?而且,这是否考虑 bad/obsolete 设计?
假设我找到了直接使用 until
对象的方法,我可以在 Protractor 源代码中看到 until.titleIs()
函数 returns a Condition
,所以我的下一个问题是如何在等待结束(或超时)后使用此 Condition
对象获取其布尔结果?对于某些特殊情况,我需要执行此操作,例如:
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
一个函数,return一个承诺:
isVisible: function () {
return browser.wait(until.titleIs(this.title), 5000).then(function () {
return true;
},
function () {
return false;
});
},
那么,你可以期待在你的测试中:
expect(myPageObject.isVisible()).toBe(true);
我正在编写一个用于测试 AngularJS 网络应用程序的中间件框架,我希望能够等待满足某些条件,然后再继续我的测试中的另一个操作。我是 Protractor 的新手,根据我在他们的文档和其他论坛中发现的内容,有几种不同的方法可以使用 browser.driver.wait
或使用 Condition
或 [=15 的类似技术来做到这一点=] 包括这个 answer.
我具体要实现的是在我的框架中遵循页面对象模型设计,让每个页面都提供自己的功能来确定该页面是否在浏览器中可见。为此,我最终编写了如下页面对象:
var pages = {
home: {
name: 'home',
url: server + '/#/home',
title: 'Home',
isVisible: until.titleIs(this.title)
},
...
}
有两个问题我正在努力解决并解决:
- 首先,我收到一条错误消息,指出
until
未定义。我还没有找到使用这个对象的正确方法,我的所有搜索都导致了等待元素可见或预期条件为真的替代方法。我怎样才能直接访问这个对象?而且,这是否考虑 bad/obsolete 设计? 假设我找到了直接使用
until
对象的方法,我可以在 Protractor 源代码中看到until.titleIs()
函数 returns aCondition
,所以我的下一个问题是如何在等待结束(或超时)后使用此Condition
对象获取其布尔结果?对于某些特殊情况,我需要执行此操作,例如: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
一个函数,return一个承诺:
isVisible: function () {
return browser.wait(until.titleIs(this.title), 5000).then(function () {
return true;
},
function () {
return false;
});
},
那么,你可以期待在你的测试中:
expect(myPageObject.isVisible()).toBe(true);