2016-11-16 8 views
0

Ich habe einige Probleme beim Öffnen einer URL mit Selen + Mokka. Dies ist die Codezeile, die ich verwende.Selen bekommen (URL) Problem auf Firefox

Ich habe festgestellt, dass es einige Probleme mit eckigen URLs gibt, aber ich habe keine Lösung gefunden.

Der Fehler ist Error: timeout of 40000ms exceeded. Ensure the done() callback is being called in this test.

Dies ist der Testfall:

it("Is visible", function() { 
     if(viable) 
     { 
      return driver.findElements(webdriver.By.id('activarMiSitio')).then(function(misProductos){ 
       misProductos[0].getAttribute("class").then(function(webElement){ 
        if(webElement==='ng-hide') 
        { 
         console.log('Element not found'); 
        } 
        else{ 
         console.log('Element exists'); 
        } 
       }).then(function(){ 
        driver.sleep(500); 
        //return driver.get('http://localhost/ClickSuscribe/#').catch(r => console.log(r)); 
        return driver.get('http://localhost/ClickSuscribe/#/MisProductos').catch(r => console.log(r)); 
       });/*.then(function(){ 
        driver.sleep(2000); 
        return driver.getCurrentUrl(); 
       }).then(function(currentUrl){ 
        driver.sleep(1000); 
        console.log(currentUrl); 
       });*/ 
      }); 
     } 
     return console.log("No está loggeado"); 
    }); 

PS: Das funktioniert in Chrome und IE. Es scheint, dass Selen Probleme mit URLs mit Anker oder Pfund hat, "#".

+0

ist das Problem über Get-Methode oder Skriptausführung? –

+0

@MohamedELAYADI Ich bin nicht wirklich sicher, aber es scheint, dass es am ehesten mit der Methode Get ist, denn wenn es dort für eine Minute stecken bleibt, dann geht es weiter zum nächsten Test. –

Antwort

0

Der Fehler sagt

Sicherstellen, dass das getan() Rückruf in diesem Test aufgerufen wird.

können Sie spritzen den done Rückruf wie folgt:

it("Is visible", function(done) { 
    //... 
}); 

Und das Timeout von der pro-Test durchgeführt gesetzt:

describe('...', function(){ 
    this.timeout(15000); 

    it('...', function(done){ 
    this.timeout(15000); 
    setTimeout(done, 15000); 
    }); 
}); 

Weitere Informationen finden Sie in the docs

Es sind auch einige known issues, also würde ich vorschlagen, Ihre Abhängigkeiten zu aktualisieren.

+0

Die erste Hälfte dieser Antwort ist falsch. Die Fehlermeldung ist irreführend. Das OP verwendet Versprechungen, und das Versprechen ist alles, was Mocha braucht, um auf einen asynchronen Test zu warten. Insbesondere wird der Aufruf von 'done()' direkt nach 'driver.get (...)' bewirken, dass der Test abgeschlossen wird, bevor die 'get'-Operation abgeschlossen ist. – Louis

+0

Danke, ich habe die Antwort geändert, aber es hilft jetzt wahrscheinlich nicht mehr. –

+0

Korrekt, wie ich mit Mocha verstehe, müssen Sie nur das Versprechen zurückgeben. Auch ich verwende 'nach (Funktion (fertig) { driver.quit(). Dann (fertig); });' –

Verwandte Themen