如何 运行 在 mocha 中进行 selenium 测试?
how to run a selenium test in mocha?
我有这样的摩卡测试:
selenium = require 'selenium-webdriver'
driver = new selenium.Builder().forBrowser('firefox').build()
after (done)->
driver.quit().then done
describe 'simple test', ->
before (done) ->
driver.get('http://127.0.0.1:8016').then done
it 'should pass this simple test', (done) ->
done()
但是当我 运行 它时,我遇到了错误:
>mocha --compilers coffee:coffee-script/register
simple test
1) "before all" hook
2) "after all" hook
0 passing (4s)
2 failing
1) simple test "before all" hook:
Error: timeout of 2000ms exceeded. Ensure the done() callback is being called in this test.
at [object Object].<anonymous> (/usr/local/lib/node_modules/mocha/lib/runnable.js:170:19)
at Timer.listOnTimeout [as ontimeout] (timers.js:110:15)
2) "after all" hook:
Error: timeout of 2000ms exceeded. Ensure the done() callback is being called in this test.
at [object Object].<anonymous> (/usr/local/lib/node_modules/mocha/lib/runnable.js:170:19)
at Timer.listOnTimeout [as ontimeout] (timers.js:110:15)
版本:
- 摩卡 2.2.1
- Coffee-script 1.9.1
- selenium-webdriver 2.45.1
如何编写一个简单的测试才能通过?
UPD:我已经通过了,但是每次测试都要制作一个新的驱动程序:
selenium = require 'selenium-webdriver'
describe 'simple test', ->
@timeout 10000
beforeEach ->
@driver = new selenium.Builder().forBrowser('firefox').build()
afterEach (done)->
@driver.quit().then -> done()
it 'should pass this simple test', (done) ->
@driver.get('http://127.0.0.1:8016').then ->
console.log('done')
done()
有效代码的超时时间为 10 秒。您的原始代码使用 2s 默认超时。您应该在原始代码中增加超时。
您应该能够通过返回承诺而不是使用 done
来简化您的代码。
after ()->
driver.quit();
为了那些不使用 CoffeeScript 的人的利益,以上内容转换为:
after(function() {
return driver.quit();
});
因为 driver.quit()
returns 一个承诺,Mocha 将使用这个承诺来计算 after
钩子何时完成。
尝试像这样使用 /testing 区域:
var test = require('selenium-webdriver/testing');
然后...
test.describe(...)
it(...)
Mocha 似乎需要这个包装器。
我有这样的摩卡测试:
selenium = require 'selenium-webdriver'
driver = new selenium.Builder().forBrowser('firefox').build()
after (done)->
driver.quit().then done
describe 'simple test', ->
before (done) ->
driver.get('http://127.0.0.1:8016').then done
it 'should pass this simple test', (done) ->
done()
但是当我 运行 它时,我遇到了错误:
>mocha --compilers coffee:coffee-script/register
simple test
1) "before all" hook
2) "after all" hook
0 passing (4s)
2 failing
1) simple test "before all" hook:
Error: timeout of 2000ms exceeded. Ensure the done() callback is being called in this test.
at [object Object].<anonymous> (/usr/local/lib/node_modules/mocha/lib/runnable.js:170:19)
at Timer.listOnTimeout [as ontimeout] (timers.js:110:15)
2) "after all" hook:
Error: timeout of 2000ms exceeded. Ensure the done() callback is being called in this test.
at [object Object].<anonymous> (/usr/local/lib/node_modules/mocha/lib/runnable.js:170:19)
at Timer.listOnTimeout [as ontimeout] (timers.js:110:15)
版本:
- 摩卡 2.2.1
- Coffee-script 1.9.1
- selenium-webdriver 2.45.1
如何编写一个简单的测试才能通过?
UPD:我已经通过了,但是每次测试都要制作一个新的驱动程序:
selenium = require 'selenium-webdriver'
describe 'simple test', ->
@timeout 10000
beforeEach ->
@driver = new selenium.Builder().forBrowser('firefox').build()
afterEach (done)->
@driver.quit().then -> done()
it 'should pass this simple test', (done) ->
@driver.get('http://127.0.0.1:8016').then ->
console.log('done')
done()
有效代码的超时时间为 10 秒。您的原始代码使用 2s 默认超时。您应该在原始代码中增加超时。
您应该能够通过返回承诺而不是使用 done
来简化您的代码。
after ()->
driver.quit();
为了那些不使用 CoffeeScript 的人的利益,以上内容转换为:
after(function() {
return driver.quit();
});
因为 driver.quit()
returns 一个承诺,Mocha 将使用这个承诺来计算 after
钩子何时完成。
尝试像这样使用 /testing 区域:
var test = require('selenium-webdriver/testing');
然后...
test.describe(...)
it(...)
Mocha 似乎需要这个包装器。