我需要自动进行登录过程测试。我正在使用webdriver.io来做到这一点。
这是我的问题。
我有这个奇怪的登录过程:
我需要的是一种以编程方式完成第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();
});
});
});
我得到了这个奇怪的输出:
数据:text / html的,chromewebdata
我知道在这种情况下暂停并不完美,但我找不到这样做的异步方法。
有人可以帮忙吗?
答案 0 :(得分:1)
提交表单后,您可能不会等待特定的状态。表单提交后的预期结果是什么?
例如,您希望浏览器重定向到带有标题的页面
<h1 class="success">Your form is submitted successfully</h1>
然后你应该做这样的事情:
webdriverio
.remote(options)
.init()
.url(myUrl)
.waitForExist('form')
.setValue('#usuario', user)
.setValue('#password', password)
.submitForm('form')
.waitForExist('h1.success', 5000)
.getText('h1', function (err, res) {
expect(res).to.contain('submitted successfully'); //chai.js
})
.call(done);