javascript - Protractor - 通用等待 URL 更改

标签 javascript testing asynchronous automation protractor

在前面的问题中,我看到等待 url 更改的一个好方法是使用:

browser.wait( function() {
    return browser.getCurrentUrl().then(function(url) {
        return /myURL/.test(url);
    });
}, 10000, "url has not changed");`

但我正在尝试一种可以将 myURL 作为变量传递的方法(以防我需要在其他网站上使用它),但无法正常工作。

我正在我的页面对象文件中尝试这样做:

this.waitUrl = function(myUrl) {
    browser.wait( function(myUrl) {
        return browser.getCurrentUrl().then(function(url, myUrl) {
            return myUrl.test(url);
        });
    }, 10000, "url has not changed");
};

如果这可能,有什么想法吗?如果可能的话,如何去做?

最佳答案

更新(2016 年 7 月):Protractor 4.0.0你可以用 urlIs 来解决和 urlContains内置预期条件。


原答案:

不要在then 函数中传递myUrl,它在页面对象函数范围内可用:

browser.wait(function() {
    return browser.getCurrentUrl().then(function(url) {
        return myUrl.test(url);
    });
}, 10000, "url has not changed");

不过我会将其定义为预期条件:

function waitUrl (myUrl) {
    return function () {
        return browser.getCurrentUrl().then(function(url) {
            return myUrl.test(url);
        });
    }
}

这样你就可以这样使用它了:

browser.wait(waitUrl(/my\.url/), 5000);

关于javascript - Protractor - 通用等待 URL 更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34358542/

相关文章:

javascript - 我可以更改 iframe 中包含的元素的样式,而该 iframe 本身又包含在外部 HTML 中吗?

scala - Sbt 依赖运行测试

javascript - 接收错误 JSON 中位置 0 处出现意外标记 <;这是后端还是前端问题?

node.js - nodejs、mongodb-update、异步、回调不被视为函数

Swift:在 View 出现之前从异步调用中检索值

Javascript RSA 加密到 Java BouncyCaSTLe 解密

javascript - 无法更改html中的自定义光标

javascript - Hammer.js 在 pinchin/pinchout 上缓慢且不稳定

java - 如何执行 JUnit 断言消息?

java - 使用 Selenium WebDriver 和 Java 切换选项卡