2016-09-25 89 views
1

我正在用下面的代碼解決量角器中的超時問題。量角器:失敗:3056ms後等待超時

dashboardPage.ts

import { browser, by, element } from 'protractor/globals'; 

class DashboardPage { 

supportButton = element.all(by.id('support-dashboard-btn')).first(); 


supportClick(): void { 
     this.supportButton.click(); 
    } 

} 

export = DashboardPage; 

supportPage.spe.ts

beforeEach(() => { 
     loginPage.getPage(); 

     loginPage.fillEmail(data.users[0].email); 
     loginPage.fillPassword(data.users[0].password); 
     loginPage.loginClick(); 
     browser.waitForAngular(); 



     browser.wait(EC.visibilityOf(dashboardPage.supportButton), 3000).then(function() {   *** step Failed: Wait timed out after 3056ms 
     dashboardPage.supportClick(); 
    }), function (error) { 
    expect(true).toBe(false); 
     }; 

通過像下面幾個環節了。不幸的是沒有爲我工作。

How to have protractor reliable results?

Protractor: wait method isn't work

Error: 

    Failed: Wait timed out after 3056ms 
     Stack: 
     Error: Wait timed out after 3056ms 
      at C:\Users\My\AppData\Roaming\npm\node_modules\protractor\node_modules\selenium-webdriver\lib\promise.js:2364:22 
      at ManagedPromise.invokeCallback_ (C:\Users\My\AppData\Roaming\npm\node_modules\protractor\node_modules\selenium-webdriver\lib\promise.js:1379:14) 
      at TaskQueue.execute_ (C:\Users\My\AppData\Roaming\npm\node_modules\protractor\node_modules\selenium-webdriver\lib\promise.js:2913:14) 
      at TaskQueue.executeNext_ (C:\Users\My\AppData\Roaming\npm\node_modules\protractor\node_modules\selenium-webdriver\lib\promise.js:2896:21) 
      at asyncRun (C:\Users\My\AppData\Roaming\npm\node_modules\protractor\node_modules\selenium-webdriver\lib\promise.js:2775:27) 
      at C:\Users\My\AppData\Roaming\npm\node_modules\protractor\node_modules\selenium-webdriver\lib\promise.js:639:7 
      at process._tickCallback (internal/process/next_tick.js:103:7) 
     From: Task: <anonymous wait> 
      at ControlFlow.wait (C:\Users\My\AppData\Roaming\npm\node_modules\protractor\node_modules\selenium-webdriver\lib\promise.js:2352:17) 
      at WebDriver.wait (C:\Users\My\AppData\Roaming\npm\node_modules\protractor\node_modules\selenium-webdriver\lib\webdriver.js:712:29) 
      at Browser.to.(anonymous function) [as wait] (C:\Users\My\AppData\Roaming\npm\node_modules\protractor\built\browser.js:61:29) 
      at Object.<anonymous> tests\Protractor\Support\supportPage.spec.ts:33:17) 
      at C:\Users\My\AppData\Roaming\npm\node_modules\protractor\node_modules\jasminewd2\index.js:96:23 
      at new ManagedPromise (C:\Users\My\AppData\Roaming\npm\node_modules\protractor\node_modules\selenium-webdriver\lib\promise.js:1082:7) 
      at controlFlowExecute (C:\Users\My\AppData\Roaming\npm\node_modules\protractor\node_modules\jasminewd2\index.js:82:18) 
      at TaskQueue.execute_ (C:\Users\My\AppData\Roaming\npm\node_modules\protractor\node_modules\selenium-webdriver\lib\promise.js:2913:14) 
      at TaskQueue.executeNext_ (C:\Users\My\AppData\Roaming\npm\node_modules\protractor\node_modules\selenium-webdriver\lib\promise.js:2896:21) 
      at asyncRun (C:\Users\My\AppData\Roaming\npm\node_modules\protractor\node_modules\selenium-webdriver\lib\promise.js:2820:25) 
      at C:\Users\My\AppData\Roaming\npm\node_modules\protractor\node_modules\selenium-webdriver\lib\promise.js:639:7 
      at process._tickCallback (internal/process/next_tick.js:103:7) 
+0

可以嘗試,而不是歐盟的做法:'browser.wait(函數(){歸元(由.ID( '支撐的儀表板-BTN'))isPresent(); },3000);' – Vlad

回答

1

那是一個有效的錯誤說Protarctor超時等待在下面browser.wait特定期間(3000ms)爲元件dashboardPage.supportButton

browser.wait(EC.visibilityOf(dashboardPage.supportButton), 3000) 

可能你必須增加超時或檢查元素定義是否正確

也是另一種意見,你neednt使用browser.waitForAngular(),量角器自動會替你

+0

我試圖通過增加超時而沒有幫助。我將默認的jasmine timeout設置爲'defaultTimeoutInterval:2500000'。我之所以把'browser.waitForAngular(); '因爲沒有網址知道角度它是一個新的頁面。 – SMPH

+0

你的情況超時不是茉莉花超時但等待timeout.Can你嘗試這樣'browser.wait(EC.visibilityOf(dashboardPage.supportButton),10000)' – AdityaReddy

+0

我想'browser.wait(EC.visibilityOf (dashboardPage.supportButton),25000)'仍然是相同的結果。 – SMPH