2013-11-25 92 views
2

我已經編寫了一個利用require js的角度項目,因此大多數javascript在登陸到特定頁面之前不會被加載。 (包括angular.js)如何讓量角器在應用程序中間接管瀏覽器

寫入流程時,我不得不使用browser.driver代替ptor,並且這種方式運行良好,直到角度組件滾入。現在我試圖找到一種方法來擠壓初始化將其拖放到browser.driver中,然後在特定流程之後以角度滾動。所以我有這樣的東西

 browser.driver.getCurrentUrl().then(function(url){ 
      ptor = protractor.getInstance(); 
      // ptor.ignoreSynchronization = true; 
      ptor.get(url); 
     }) 
     ptor.sleep(2000); 

這似乎是越來越ptor未定義語句後即使我超時。我應該如何做這個交換。並使用url做量角器的構造函數。無需重新加載。

--------------插件--------- 好了,所以這是我不得不

 searchInput = browser.driver.findElement(by.css('#searchstring')); 
     searchInput.sendKeys('logan airport'); 
     searchInput.sendKeys(protractor.Key.ENTER)//.perform(); 
     browser.driver.sleep(6000); 

     browser.driver.wait(function(){ //angular loads here 
      return browser.driver.getCurrentUrl(function(url){ 
       searchUrl = url; 
       return /screwdriver/.test(url); 
      }); 
     }, 10000) 
     browser.driver.sleep(2000); 
     /*UNEXECUTED CODE HERE: Error while waiting for angular to sync with your page*/ 
     firstItem = element.all(by.css('.itemContainer')).get(1).click(); 
     browser.driver.sleep(10000); 

,這是我在做什麼現在...

  searchInput = ptor.findElement(protractor.By.css('#searchstring')); 
      searchInput.sendKeys('logan airport'); 
      searchInput.sendKeys(protractor.Key.ENTER)//.perform(); 
      ptor.sleep(6000); 

      ptor.wait(function(){ //this page loads angular, but stuck on white page, which with previous version this is fluent, it says angular cannot be found on the page 
       return ptor.driver.getCurrentUrl().then(function(url){ 
        searchUrl = url; 
        return /screwdriver/.test(url); 
       }); 
      }, 10000) 

      ptor.sleep(2000); 

      /*NOT EXECUTED: Error while waiting for angular to sync with your page*/ 
      foundItems = ptor.findElement(protractor.By.css('.itemContainer')); 
      firstItem = foundItems.get(1).click(); 
      ptor.sleep(2000); 

似乎都沒有工作,一個是角度不同步,另一種是角沒有找到,但實際頁面具有角是存在的,如果ü打F12和輸入角。

回答

9

實際上你不必使用新的語法來構造ptor(在新語法中,ptor〜= browser)。 ptor.url表示'加載此頁面',而不是'爲此頁面設置量角器'。你可能想要這樣的東西:

browser.driver.get(yourUrl); 
browser.driver.wait(function() { 
    // Put in some test here that returns true when Angular is ready to go. 
}); 
element(by.id('foo')); // Start using protractor here! 
+0

實際上,我認爲ptor是需要的,以便找到轉發器綁定元素。將「駕駛員」驅動程序是一個可行的解決方案。 – user2167582

+0

對不起,我不明白你的評論。你試過我寫的代碼片段嗎?你會得到什麼錯誤? – Jmr

+0

我更新了這個問題,希望我不會讓你更困惑。 – user2167582

相關問題