我正在测试从我们的网站添加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());
});
};
答案 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}}。