gpt4 book ai didi

javascript - 如何在 Protractor 中直接访问 'until' 对象?

转载 作者:行者123 更新时间:2023-11-28 20:40:38 24 4
gpt4 key购买 nike

我正在编写一个用于测试 AngularJS 网络应用程序的中间件框架,我希望能够等待满足某些条件,然后再继续测试中的另一个操作。我是 Protractor 的新手,根据我在他们的文档和其他论坛中发现的内容,有几种不同的方法可以使用 browser.driver.wait 或使用 的类似技术来做到这一点包含此 answer 的条件 promise .

我具体要实现的是在我的框架中遵循页面对象模型设计,并允许每个页面提供自己的功能来确定该页面是否在浏览器中可见。为此,我最终编写了如下页面对象:

var pages = {
home: {
name: 'home',
url: server + '/#/home',
title: 'Home',
isVisible: until.titleIs(this.title)
},
...
}

有两个问题我正在努力解决并解决:

  1. 首先,我收到一条错误消息,提示 until 未定义。我还没有找到使用这个对象的正确方法,我的所有搜索都导致了等待元素可见或预期条件为真的替代方法。我怎样才能直接访问这个对象?而且,这是否被认为是糟糕/过时的设计?
  2. 假设我找到了一种直接使用 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

非常感谢您对此的帮助!

最佳答案

untilprotractor.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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com