2016-06-03 10 views
1

Ich versuche zu lernen, meine Web-Anwendungen mit browserstack zu testen. Ich bin mit ihrem Beispiel von ihrer WebsiteWie kann man einen richtigen Test mit Browserstack, Selen und Mokka durchführen?

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(); }); 
}); 

und es gibt mir diesen Eingang

Google Search 1) "vor allem" Haken

0 vorbei (2s) 1 Fehler

1) Google-Suche "vor allem" Hook: Fehler: Timeout von 2000ms überschritten. Stellen Sie sicher, dass der Rückruf done() in diesem Test aufgerufen wird.

Ich habe versucht, meinen eigenen Test

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(); 
     }) 
    }); 
}) 

und es gibt mir diese Ausgabe

 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. 

Wenn ich Kommentar driver.get es funktioniert ok ... aber ich irgendwie muss es laufen ..

Also wie kann ich einen Funktionstest machen? Ich kann nichts auf Google finden.

+0

Was ist, wenn Sie auf BrowserStack eine Sitzung zu starten verwenden den gleichen allgemeinen Code, sondern geschieht, Sie einen lokalen Browser ausführen? Funktioniert es? – Louis

+0

Wenn ich lokal laufe, macht es das gleiche. und der Test wurde beendet, bevor der Browser geöffnet wurde – John

Antwort

2

Es sieht wie das Standardzeitlimit für Selenium zu niedrig aus. Sie sollten es bis zu 30 Sekunden erhöhen:

mocha mocha-spec.js --timeout 30000 

Sie können auch die Timeout in Ihrem Skript gesetzt:

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

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