0

實習生是否有相當於Capybara的(RoR)default_wait_time?實習生Selenium測試的default_wait_time

setPageLoadTimeout和setFindTimeout似乎沒有完成任何事情。

this.timeout = 60000似乎給整個測試60秒,但我希望所有步驟都有一個默認的等待時間。否則,感覺這些步驟的順序不合適,因爲步驟依賴的元素尚未出現在頁面上。

 var title = 'title ' + (new Date()).toString(); 
     var remote = this.remote; 
     return remote 
      .get(require.toUrl('http://' + Configs.host + '/logout')) 
      .get(require.toUrl('http://' + Configs.host + '/auth/facebook')) 
      .findById('email') 
       .click() 
       .type(Configs.fb.username) 
       .end() 
      .findById('pass') 
       .click() 
       .type(Configs.fb.password) 
       .end() 
      .findByCssSelector('#login_form input[type=submit]') 
       .click() 
       .end() 
      // browser successfully navigates to "/things" 
      .findByCssSelector('a.new_thing') 
       .click() 
       .end() 
     // browser often navigates to "/things/new" 
      .findByCssSelector('input.title') 
     // terminal message always 'StaleElementReference' 
     // even though a pollUntil (ommitted) does find 'input.title' 
       .click() 
       .type(title) 
       .end() 
      .findByCssSelector('button.create') 
       .click() 
       .end() 

是否有其他人可靠地使用此框架的單頁網絡應用程序?

+0

你能不能展示一些代碼,比如你正在寫的測試用例? 'setFindTimeout'絕對是一回事。 – 2014-09-24 06:45:42

+0

我用測試代碼的示例更新了我的問題。我在代碼中有評論。我使用html5 pushState,瀏覽器地址欄導航來完成URL,但它們實際上只是映射到客戶端Backbone.js路由器路徑。 – 2014-09-24 07:17:56

回答

0

setFindTimeout設置遠程服務器在超時之前嘗試查找元素時等待元素出現的時間量。如果要素不能保證立即在頁面上存在,那麼你應該在頁面加載後調用setFindTimeout

return this.remote.get('http://example.com') 
    .setFindTimeout(5000) 
    .findById('email') 
    .click() 
    .type(Configs.fb.username) 
    .end() 
    .findById('pass') 
    .click() 
    .type(Configs.fb.password) 
    .end() 
    // ... 

注意,一些硒服務器將加載一個新頁面復位後等待超時,所以你可能需要在加載新頁面時再次調用它。

+0

我在你建議的地方添加了它,但它不起作用。點擊()。end()。即使一個pollUntil,調用document.getQuerySelector('input.thing')獲得一個元素,我也會得到'StaleElementReference',並且我可以在瀏覽器上看到輸入字段。 – 2014-09-25 01:50:47

+0

其實,我認爲這是因爲我在我的代碼中做了一個.html('')來清除一段內容,並且運行程序代碼有一個對http:// localhost:4444/wd/hub的舊引用/ session/4309cf4b-8005-4caf-a5c3-dd3d0d20e237/element/12/click,因爲之前的元素已被擦除,因此元素12不再存在。如果在n * 1000毫秒後重試,那麼 – 2014-09-25 04:11:25

+0

會很好。 – 2014-09-25 04:13:15