2017-03-06 133 views
1

我們正在嘗試自動化可公開訪問的網站,點擊其中一個鏈接,但測試失敗,超時異常而定位如下元素:量角器定位超時例外AngularJs應用

來源:任務: Protractor.waitForAngular() - 定位器:通過(鏈接文本,我的帳戶) 下面的示例conf和spec文件。 請求如何解決此問題的幫助。

conf.js

exports.config = { 
       seleniumAddress: 'http://localhost:4444/wd/hub', 
       capabilities: { 
           'browserName': 'chrome' 
       },    
       specs: ['test.js'] 
}; 

test.js 

describe('test', function() { 

       it('should navigate', function(done) { 
           browser.get('https://ww2.tracfone.com'); 
           element(by.linkText('MY ACCOUNT')).click(); 
           done(); 
       }); 
}; 
+0

通常,當您正在瀏覽的頁面不是角頁面時,會發生這種情況。我檢查了一下,似乎並不是這種情況。你能發佈關於你收到的錯誤的更多細節嗎? – tehbeardedone

回答

0

我的設置根據你張貼的所有項目的樣本項目,這個測試似乎工作me.I'm不知道爲什麼您獲得的是超時通常與非角度的頁面相關聯,但設置爲browser.ignoreSynchronization = true可幫助您避開此錯誤。

var ec = protractor.ExpectedConditions; 
var timeout = 60000; 

describe('test', function() { 
    it('should navigate', function(done) { 

     browser.ignoreSynchronization = true; 
     browser.get('https://ww2.tracfone.com') 

     var myAccount = element(by.linkText('MY ACCOUNT')); 
     browser.wait(ec.visibilityOf(myAccount)).then(function() { 
      myAccount.click(); 
     }) 
     done(); 
    }); 
}); 
1

發現你看到了你的網頁的問題的根本原因。看起來你的網站不斷輪詢$超時或$ http,量角器將無限期地等待並超時。

我已經監視了下面的http流量,看到你的應用頻繁輪詢和量角器等待。結帳下面的屏幕抓取(時間軸中的綠色標記,表明$ HTTP調用 - https://ww2.tracfone.com/cgi-bin/tealeaf.pl)。爲什麼你看到這個錯誤

enter image description here

更多細節documented here。好。爲此提出不同的解決方案,有多種解決方法。我會簡單地談談替代方案,並讓你選擇最好的一個。

  1. IgnoreSynchronization:打開此標誌 - browser.ignoreSynchronization爲假browser.get()之前並繼續測試流程和國旗再次爲其他頁面設置爲true 檢查here

  2. Interval.js:我是不是專家這一點,但你可以探索更多here

您應該使用$間隔連續輪詢 (在Angular 1.2rc3中引入)。

  • 嘗試使用不同的超時配置和查看是否一些時間

    allScriptsTimeout後應用程式輪詢站:120000, getPageTimeout:120000, jasmineNodeOpts:{ defaultTimeoutInterval :120000 }