我需要自动化登录过程测试。我正在使用webdriver.io来做到这一点。
这是我的问题。
我有这个奇怪的登录过程:
- 我必须在常规网页中填写表格
- 发送表单后,我将被重定向到一个不存在的 URL,但它的一个查询参数中包含一个访问代码
- 然后我获取此访问代码并将其发送到另一个位置以获取访问令牌。
我需要的是一种以编程方式完成第 2 步的方法,因为第 1 步和第 3 步我已经弄清楚了。
我正在尝试这样:
var webdriverio = require('webdriverio');
var options = {
desiredCapabilities: {
browserName: 'chrome'
}
};
webdriverio
.remote(options)
.init()
.url(myUrl)
.title(function(err, res) {
console.log('Title was: ' + res.value);
})
.setValue('#usuario', user)
.setValue('#password', password)
.submitForm('form', function(){
this.url(function(err, res){
console.log(res.value);
});
this.pause(5000, function(){
this.end();
});
});
但是,似乎submitForm
在页面加载之前调用了回调。这样,我的日志会显示与我之前传递的完全相同的 URL。
如果我这样尝试:
.submitForm('form', function(){
this.pause(5000, function(){
this.url(function(err, res){
console.log(res.value);
this.end();
});
});
});
我得到这个奇怪的输出:
数据:文本/html,chromewebdata
我知道在这种情况下暂停并非完美无缺,但我找不到这样做的异步方式。
任何人都可以帮忙吗?