Protractor-通用等待URL改变 [英] Protractor- Generic wait for URL to change

查看:244
本文介绍了Protractor-通用等待URL改变的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

在previous问题,我已经看到了一个很好的方式来等待链接直接改变就是使用:

In previous questions I have seen that a nice way to wait for the url to change is to use:

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

但我想有我可以通过myURL作为一个变量(万一我需要与其他网站使用)的方法,而不是工作。

But I am trying to have a method that I can pass myURL as a variable (in case I need to use it with other sites) and is not working.

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

I am trying this in my Page Object file:

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

任何想法,如果这甚至有可能,如果是这样怎么办呢?

Any ideas if this is even possible and how to do it if so?

推荐答案

更新(2016年7月):量角器4.0.0 你可以用的 urlIs 和的 urlContains 内置的预期条件。

Update (July 2016): with Protractor 4.0.0 you can solve it with urlIs and urlContains built-in Expected Conditions.

原来的答复:

千万不要错过 myUrl 然后函数内部,它可以从网页目标函数范围:

Don't pass myUrl inside the then function, it is available from the page object function scope:

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);
        });
    }
}

这样你就可以使用这种方式:

So that you can then use it this way:

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

这篇关于Protractor-通用等待URL改变的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆