2016-11-11 2 views
0

Ich arbeite an der Erstellung eines Testskripts für eine nicht eckige js-Website mit Winkelmesser. Mein Code ist wie folgt:So warten Sie, bis eine Website vollständig mit dem Winkelmesser geladen wird

var co = require('co'); 
var path = require('path'); 

describe("TEST", function() { 

    it("test", co.wrap(function*() { 
     browser.ignoreSynchronization = true; 

     yield browser.get(URL, 60000); 
     browser.sleep(5000);// I want to remove the sleep statements 
     var elmOK = browser.driver.findElement(by.css('a[href="#login"]')); 
     yield elmOK.click(); 
     expect(browser.getCurrentUrl()).toContain("login"); 
     yield browser.switchTo().frame('here-account-sdk').then(function() { 
      browser.driver.findElement(by.id('sign-in-email')).sendKeys("uid"); 
      browser.driver.findElement(by.id('sign-in-password-encrypted')).sendKeys("password"); 
      browser.driver.findElement(by.xpath(' //*[@id="sign-in-form"]/div[2]/div[6]/form/fieldset[3]/button')).click(); 

     }); 
     browser.sleep(5000);// I want to remove the sleep statements 
     var elmOK = browser.driver.findElement(by.xpath('//*[@id="lnav"]/li[3]/a')); 
     yield elmOK.click(); 
     browser.sleep(1500);// I want to remove the sleep statements 
     browser.driver.findElement(by.xpath('//*[@id="administration"]/div/div[1]/select/option[2]')).click(); 
     browser.sleep(5000);// I want to remove the sleep statements 

     browser.driver.findElement(by.xpath('//*[@id="administration"]/div/div[2]/table/tbody/tr[1]/td[10]/span')).click(); 
     browser.sleep(5000);// I want to remove the sleep statements 

     browser.driver.findElement(by.xpath('//*[@id="content"]/div/div[2]/div/div/div/div[3]/button[1]')).click();//Delete the file 
     browser.sleep(5000);// I want to remove the sleep statements 
    })); 




}); 

Wenn ich schlafen in meinem Code hinzufügen, der Test wie erwartet läuft. Aber ich möchte Sleep-Anweisungen vollständig aus meinem Code entfernen. Ich habe mich auf viele andere Stack-Overflow-Fragen bezogen, aber es hat nicht geholfen. :(

Ich zum ersten Mal browser.manage().timeouts().implicitlyWait(5000); aber ich denke, es gibt keine Verzögerung war meine url beim Laden.

Früher habe ich erwartet Zustand, aber es funktioniert auch nicht.

Ich habe browser.wait(1000) aber mein Skript nicht. Bitte . Beratung mich, wie ich etwas in diesem Problem

Antwort

0

verloren fühlen ich denke, das Problem mit dieser Linie ist:

browser.ignoreSynchronization = true; 

Von this SO es

macht Winkelmesser nicht für Angular Versprechen warten, wie die von $ http oder $ timeout

Protractor Element zu lösen alle Funktionen Rückkehr verspricht so könnte dies die Ursache des Problems sein ?

Auch sieht diese Struktur ein wenig seltsam:

element(by.css('a[href="#login"]')).click(); 
:

var elmOK = browser.driver.findElement(by.css('a[href="#login"]')); 
yield elmOK.click(); 

ich mit nur vereinfachen würde

Verwandte Themen