我正在使用NightWatchJS编写一些自动化。我有一个简单的测试场景,我做了以下的事情
我有简单的登录页面和提交按钮。登录后,内页也有iframe。一旦登录操作成功,iframe中的文本字段就会聚焦于javascript。
我的NightWatch测试代码
module.exports = {
before: function(browser) {
console.log("Setting up...");
browser
.maximizeWindow()
},
after : function(browser) {
browser
.end()
console.log("Closing down...");
},
'Check Form Elements' : function (browser) {
browser
.url("siteurl")
.waitForElementVisible("body", 1000)
.waitForElementPresent('#email', 10000)
.setValue('#email','me@a5his.com')
.waitForElementPresent('#password', 10000)
.setValue('#password', 'encrypted')
.submitForm('#login_form', function(result){
console.log(result)
})
.pause(5000)
.waitForElementVisible('body', 10000)
.waitForElementVisible('li.active', 5000)
.assert.containsText('li.active', "Home")
.assert.elementPresent('#iframeone')
.frame('iframeone')
.waitForElementVisible('.wi-wrap', 5000)
. assert.containsText('header h1', 'Messages')
}
};
此测试通过表单提交后,表示
Timed out while waiting for element <body> to be present for 10000 milliseconds. - expected "visible" but got: not found
我使用的是Chrome 50,ChromeDriver 2.21.371459,OS X - El Capitan。 我在下面附上了我的硒细节。
提前致谢。
答案 0 :(得分:0)
成功登录后您的页面是否重定向?
你可以试试这个:
browser
.url("siteurl")
.waitForElementVisible('#email', 10000,false)
.setValue('#email','me@a5his.com')
.setValue('#password', 'encrypted')
.click('#login_form')
.waitForElementVisible('li.active', 5000,false)
.verify.containsText('li.active', "Home")
.verify.elementPresent('#iframeone')
.frame('#iframeone')
.waitForElementVisible('.wi-wrap', 5000,false)
.verify.containsText('header h1', 'Messages')
如果帧ID缺失或为空,请记住,服务器应切换到页面的默认内容。所以选择器应该如下所示,以确保它在那里并且是唯一的。
'input[name=username]',
'button[name=login]',
'iframe[class=iframeone]'
编辑1:对于元素&#39; body&#39; ,你应该检查“是否存在”。而不是&#39;是否可见&#39;
尝试waitForElementPresent('body',5000,false)
而不是
waitForElementVisible('body',5000,false)