2015-08-19 37 views
2

我正在使用量角器頁面對象模型來測試多頁單頁混合Web服務。我正在做的工作是首先在一個非角度網站上註冊一些教師和學生,然後與每個用戶登錄到不同的網址並執行操作。我使用的IDE是Webstorm。註冊部分進展順利,但當它應該導航到登錄功能中的新網址時。它扔了致命錯誤:CALL_AND_RETRY_LAST分配失敗 - 進程內存不足我不知道自從登錄功能在前幾個測試中正常工作(我刪除了其他測試用例的清潔)後發生了什麼,有什麼建議嗎?先謝謝你。量角器browser.get()無法導航到具有致命錯誤異常的url

這是我的代碼片斷,應該非常直截了當。

describe('saltare registration test', function() { 
      var url,username = 'xxx',password = 'xxx'; 
      describe('instructor and student registration', function() { 
       beforeEach(function() { 
        isAngularSite(false); 
        url = 'https://prod-cn.saltare.pearson-intl.com/batch_reg/batches/'; 
        common.login(url, username, password); 
       }); 
       it('instructor register via saltare', function() { 
        saltare.updateUsers('instructor', 2); 
       }); 
      }); 

      describe('instructor and student setup', function() { 
       beforeEach(function() { 
        isAngularSite(false); 
        url = 'http://www.myieltslab.com/'; 
        password = 'xxx'; 
       }); 
       it('instructor setup personal profile', function() { 
         common.login(url, username, password); 
        } 
       }); 
      }); 
     }); 

這裏是我的登錄功能:

var common = function(){ 
    this.login = function(url, username, password){ 
     console.log('in function login:'+url+' '+username+' '+password); 
     //browser.driver.nstrong textavigate().to(url); 
     browser.get(url); 
     browser.driver.manage().window().maximize(); 
     element(common_objects.USERNAME).sendKeys(username); 
     element(common_objects.PASSWORD).sendKeys(password); 
     element(common_objects.SUBMIT).click(); 
    }; 
} 

這裏是控制檯日誌和錯誤信息

Using the selenium server at http://localhost:4444/wd/hub 
[launcher] Running 1 instances of WebDriver 
Started 
in function:https://prod-cn.saltare.pearson-intl.com/batch_reg/batches/ xxx xxx 
in function:https://prod-cn.saltare.pearson-intl.com/batch_reg/batches/ xxx xxx 
in function:http://www.myieltslab.com/ xxx xxx 
FATAL ERROR: CALL_AND_RETRY_LAST Allocation failed - process out of memory 

Process finished with exit code -1073740791 (0xC0000409) 

回答

1

Google says,這個錯誤是由超過上節點的默認成員限制所致(這是512MB),由於使用大型數據文件?我沒有看到代碼中看起來太大的任何東西(雖然我不確定isAngularSite(false)在做什麼)。

我會嘗試運行最後一次描述,看看它是否自己失敗(我猜不是)。在這一點上,很難說沒有看到代碼。

如果失敗,請嘗試增加節點的內存限制:

node --max-old-space-size=1024 my-node-script.js 
+0

謝謝你的回覆。 'isAngularSite'除了'global.isAngularSite = function(flag){browser.ignoreSynchronization =!flag;};'之外什麼也沒做,但是我自己運行了第二個描述,似乎工作正常。我嘗試將節點的內存限制從1 GB增加到8 GB,在某個時間點(5或6 GB),錯誤更改爲「致命錯誤:無效陣列長度分配失敗 - 進程內存不足」,而不是它仍然拋出同樣的例外。任何其他想法?如果你想看到 –

+0

我現在已經沒有想法了,那麼我很樂意向你展示原始代碼......當測試運行時,一定要記住你的記憶?!?對不起,我無法提供更多幫助。 – Brine

1

一些更多的研究後,我終於找到了錯誤和解決方案,其爲,無棱角的根本原因,如果你將ignoreSynchronization設置爲關閉,不要使用element(),而應使用Webdriver的browser.driver.findElement()。這解決了所有問題。

這裏是工作的代碼,

var common = function(){ 
    this.login = function(url, username, password){ 
     console.log('in function login:'+url+' '+username+' '+password); 
     browser.driver.get(url); 
     browser.driver.manage().window().maximize(); 
     browser.driver.findElement(common_objects.USERNAME).sendKeys(username); 
     browser.driver.findElement(common_objects.PASSWORD).sendKeys(password); 
     browser.driver.findElement(common_objects.SUBMIT).click(); 
    }; 
} 
相關問題