实习生是否有相当于Capybara(RoR)的default_wait_time?
setPageLoadTimeout和setFindTimeout似乎没有完成任何事情。
this.timeout = 60000似乎给整个测试60秒,但我希望所有步骤都有默认的等待时间。否则,感觉步骤乱序,因为步骤依赖的元素尚未出现在页面上。
var title = 'title ' + (new Date()).toString();
var remote = this.remote;
return remote
.get(require.toUrl('http://' + Configs.host + '/logout'))
.get(require.toUrl('http://' + Configs.host + '/auth/facebook'))
.findById('email')
.click()
.type(Configs.fb.username)
.end()
.findById('pass')
.click()
.type(Configs.fb.password)
.end()
.findByCssSelector('#login_form input[type=submit]')
.click()
.end()
// browser successfully navigates to "/things"
.findByCssSelector('a.new_thing')
.click()
.end()
// browser often navigates to "/things/new"
.findByCssSelector('input.title')
// terminal message always 'StaleElementReference'
// even though a pollUntil (ommitted) does find 'input.title'
.click()
.type(title)
.end()
.findByCssSelector('button.create')
.click()
.end()
是否有其他人可靠地将此框架用于单页网页应用程序?
答案 0 :(得分:0)
setFindTimeout
设置远程服务器在超时之前尝试查找元素时等待元素出现的时间。如果不保证元素立即存在于页面上,那么您应该在加载页面后调用setFindTimeout
:
return this.remote.get('http://example.com')
.setFindTimeout(5000)
.findById('email')
.click()
.type(Configs.fb.username)
.end()
.findById('pass')
.click()
.type(Configs.fb.password)
.end()
// ...
请注意,某些Selenium服务器会在加载新页面后重置等待超时,因此您可能需要在加载新页面时再次调用它。