2016-10-25 4 views
0

Ich versuche, einen einfachen UI-Test mit Jasmine und Selen-Webdriver zu schreiben.selen webdriver funktioniert nicht mit Jasmin

Allerdings kann ich es nicht funktionieren. Im Folgenden sind die Umgebung Ich verwende:

  • Knoten v6.6.0
  • [email protected] (als globales Modul installiert ist)
  • [email protected] -3
  • ChromeDriver 2.25.426935 (in/usr/local/bin) (in node_modules installiert)
  • Neueste Google Chrom (Version 54.0.2840.71 (64-bit))
  • Mac OS X 10.11.6 (El Capitan)

Der Code ist ziemlich einfach (in Typoskript):

import * as webdriver from 'selenium-webdriver'; 
 

 
let by = webdriver.By; 
 
let until = webdriver.until; 
 

 
describe("my suite",() => { 
 

 
    beforeEach(() => { 
 
    }) 
 

 
    afterEach(() => { 
 
    }) 
 
    
 
    it("should work",() => { 
 
     console.log("==========>"); 
 
     let driver = new webdriver.Builder() 
 
        .forBrowser("chrome") 
 
        .build(); 
 
     driver.get("https://www.google.com") 
 
     .then(s => { 
 
      return driver.getTitle(); 
 
     }) 
 
     .then(title => { console.log(title) }) 
 
     console.log("<=========="); 
 
    }) 
 
});

Der erzeugte JS-Code:

"use strict"; 
 
var webdriver = require('selenium-webdriver'); 
 
var by = webdriver.By; 
 
var until = webdriver.until; 
 
describe("my suite", function() { 
 
    beforeEach(function() { 
 
    }); 
 
    afterEach(function() { 
 
    }); 
 
    it("should work", function() { 
 
     console.log("==========>"); 
 
     var driver = new webdriver.Builder() 
 
      .forBrowser("chrome") 
 
      .build(); 
 
     driver.get("https://www.google.com") 
 
      .then(function (s) { 
 
      return driver.getTitle(); 
 
     }) 
 
      .then(function (title) { console.log(title); }); 
 
     console.log("<=========="); 
 
    }); 
 
});

Der gleiche Code kann ohne Probleme als eigenständige JS ausgeführt werden (mit Knoten):

"use strict"; 
 
var webdriver = require('selenium-webdriver'); 
 
var by = webdriver.By; 
 
var until = webdriver.until; 
 
var driver = new webdriver.Builder() 
 
    .forBrowser("chrome") 
 
    .build(); 
 
driver.get("https://www.google.com").then(function (s) { 
 
    return driver.getTitle(); 
 
}) 
 
    .then(function (title) { console.log(title); }); 
 
driver.quit();

Ich weiß nicht, ob es irgendeine Konfiguration erforderlich für Jasmin mit Selen zu arbeiten. Bitte helfen Sie.

Das Verschieben der Webdriver-Initialisierung auf "beforeEach" hilft nicht. Wenn ich den Code arbeiten lassen kann, verschiebe ich ihn auf "beforeEach" und beende ihn in "afterEach".

+0

Nun druckt es keinen Fehler für Sie? Oder der von Typoskript generierte Code funktioniert nicht? – pagep

+0

Ich habe es tatsächlich herausgefunden. Da selen-webdriver asynchrone Operationen sind, muss ich asynchrone Aromen von Jasmin/Mocha-APIs verwenden. –

Antwort

2

Ich fand es heraus. Da Selen-Webdriver Async-Operationen sind, muss ich Async-Geschmack für Jasmin/Mokka verwenden.

import * as webdriver from 'selenium-webdriver'; 

let by = webdriver.By; 
let until = webdriver.until; 

describe("my suite",() => { 

    beforeEach(() => { 
    }) 

    afterEach(() => { 
    }) 

    it("should work", (done) => { 
     console.log("==========>"); 
     let driver = new webdriver.Builder() 
        .forBrowser("chrome") 
        .build(); 
     driver.get("https://www.google.com") 
     .then(s => { 
      return driver.getTitle(); 
     }) 
     .then(title => { console.log(title); done(); }) 
     console.log("<=========="); 
    }) 
});