Phantomjs没有看到twitter / facebook授权页面

时间:2015-03-10 20:05:52

标签: javascript phantomjs casperjs

我正在测试从我们的网站添加twitter / facebook帐户功能。点击“连接到Twitter'我的网站上的按钮,我们被重定向(使用oauth验证和授权)到twitter api授予访问权限等。从我的casper测试模块,点击“连接到Twitter'按钮,我从截图中看到,phantomjs仍然存在于我当前的网页上,而不是真正的twitter api页面。有人可以帮我吗?

脚本片段:

exports.addAccount = function(options) {
    this.navToAddService(); //custom function to navigate to particular page

    casper.then(function() {
        this.click('#add_twitter'); //this is the id of the button 'connect to twitter'
    }).then(function() {
        this.echo(this.getCurrentUrl());
    });
};

1 个答案:

答案 0 :(得分:1)

在尝试点击按钮之前,如何更改代码以使用waitForSelector()

exports.addAccount = function(options) {
    this.navToAddService(); //custom function to navigate to particular page

    casper.waitForSelector('#add_twitter', function() {
        this.click('#add_twitter'); //this is the id of the button 'connect to twitter'
    }).then(function() {
        this.echo(this.getCurrentUrl());
    });
};

这绕过了异步代码的任何潜在时序问题。 (例如,我猜测navToAddService()正在添加您尝试点击的按钮。)

如果您超时,您就知道按钮永远不会出现,并且可以开始排除更具体的问题。

同样,您可以将then()与您期望的网址名称一起使用waitForUrl(),而不是使用{{1}}。