2016-06-03 4 views
1

Я пытаюсь научиться тестировать свои веб-приложения с помощью браузера. Я бег их пример с их сайтаКак сделать правильный тест с помощью браузера, селена и мокко?

var assert = require('assert'), 
    fs = require('fs'); 

var webdriver = require('selenium-webdriver') 
    test = require('selenium-webdriver/testing'); 

test.describe('Google Search', function() { 
    var driver, server; 

    test.before(function() { 
    var capabilities = { 
    'browserName' : 'firefox', 
    'browserstack.user' : 'my username', 
    'browserstack.key' : 'my key' 
    } 
    driver = new webdriver.Builder(). 
    usingServer('http://hub-cloud.browserstack.com/wd/hub'). 
    withCapabilities(capabilities). 
    build(); 
    }); 

    test.it('should append query to title', function() { 
    driver.get('http://www.google.com'); 
    driver.findElement(webdriver.By.name('q')).sendKeys('BrowserStack'); 
    driver.findElement(webdriver.By.name('btnG')).click(); 
    driver.wait(function() { 
     return driver.getTitle().then(function(title) { 
     return 'BrowserStack - Google Search' === title; 
     }); 
    }, 1000); 
    }); 

    test.after(function() { driver.quit(); }); 
}); 

и это дает мне этот вход

Google Search 1) "перед всем" крюком

0 попутная (2s) 1 неудача

1) Поиск в Google «до всех»: Ошибка: превышен превышение 2000 мс. Убедитесь, что в этом тесте вызывается обратный вызов done().

Я попытался запустить мой собственный тест

var assert = require('assert'); 
var fs = require('fs'); 

var webdriver = require('selenium-webdriver'); 
describe('Google Search', function(){ 
    var driver; 
    var server; 
    var capabilities = { 
     'browserName' : 'firefox', 
     'browserstack.user' : 'myuser', 
     'browserstack.key' : 'mykey' 
    } 
    before(function(done){ 
     driver = new webdriver.Builder() 
      .usingServer('http://hub-cloud.browserstack.com/wd/hub') 
      .withCapabilities(capabilities) 
      .build(); 
     done(); 
    }); 
    after(function(){ 
     driver.quit(); 
    }); 
    describe('Here we go', function(){ 
     it('Should do something', function(done){ 
      driver.get('http://www.google.ro').then(done); 
      // done(); 
     }) 
    }); 
}) 

и это дает мне этот выход

 Google Search 
    Here we go 
     1) Should do something 


    0 passing (2s) 
    1 failing 

    1) Google Search Here we go Should do something: 
    Error: timeout of 2000ms exceeded. Ensure the done() callback is being called in this test. 

Когда я комментирую driver.get это работает нормально ... но я вроде это нужно ..

Так как я могу сделать функциональный тест? Я ничего не могу найти в google ..

+0

Что произойдет, если вы используете один и тот же общий код, но вместо того, чтобы начать сеанс на BrowserStack, вы запустить локальный браузер? Это работает? – Louis

+0

если я запускаю локально, он делает то же самое. и тест закончен прямо перед открытием браузера – John

ответ

2

Похоже, что таймаут по умолчанию слишком низкий для Selenium. Вы должны увеличить его до 30 секунд:

mocha mocha-spec.js --timeout 30000 

Вы также можете установить тайм-аут в сценарии:

before(function(done){ 
    this.timeout(30000); 

    driver = new webdriver.Builder() 
     .usingServer('http://hub-cloud.browserstack.com/wd/hub') 
     .withCapabilities(capabilities) 
     .build(); 
    done(); 
}); 

 Смежные вопросы

  • Нет связанных вопросов^_^