2016-11-11 2 views
0

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

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




}); 

Если я добавлю спящий режим в свой код, тест будет проходить, как ожидалось. Но я хочу полностью удалить инструкции сна из моего кода. Я ссылался на многие другие проблемы с переполнением стека, но это не помогло. :(

я впервые использовал browser.manage().timeouts().implicitlyWait(5000);, но я думаю, что не было никакой задержки в загрузке моего URL.

я использовал ожидался состояние, но оно также не работает.

Я добавил browser.wait(1000) но мой сценарий не удается. Пожалуйста, . мне совет, как я чувствую себя немного потерял в этой задаче

ответ

0

Я думаю, что проблема с этой линией:

browser.ignoreSynchronization = true; 

От this SO это

делает транспортир не ждать угловых обещаний, таких как те, от $ HTTP или $ таймаута для решения

функция элемента

Угломеров всего возвращение обещает так что это может быть причиной вашей проблемы ?

Кроме того, эта структура выглядит немного странно:

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

Я бы упрощать только с:

element(by.css('a[href="#login"]')).click(); 
Смежные вопросы