2013-12-16 38 views
0

我有一個奇怪的問題,當我通過Selenium(使用Intern.io框架)運行功能測試時,只有第一個元素被識別;任何元素我試圖返回後訪問的錯誤:TheIntern.io/Selenium elementByCssSelector一次只能工作

Error: Error response status: 7 

我知道這響應解析爲:

{summary:'NoSuchElement', 
detail:'An element could not be located on the page using the given search parameters.'} 

此錯誤是令人沮喪的,因爲我知道該元素是絕對可用。

這裏是一個失敗我的簡單功能測試:

define([ 
    'intern!object', 
    'intern/chai!assert', 
    'require' 
    ], function (registerSuite, assert, require) { 
    registerSuite({ 
     name: 'search', 

     'geocode search test': function() { 
     return this.remote 
     .get('http://localhost:8181') 
     .elementByCssSelector('.modal-close').clickElement() 
     .elementByCssSelector('#location_search_field').clickElement().type('San Francisco, CA') 
     } 
    }); 
}); 

測試會發現.modal-close元素,適當地點擊它,但是,之後它會返回一個錯誤試圖找到#location_search_field元素(拋上面提到的錯誤)。

如果我註釋掉.elementByCssSelector('.modal-close').clickElement()一行,硒沒有發現位置輸入字段並填充所提供字符串的問題。

我也試過了方法elementById('location_search_field')

如果你在這裏想知道我的環境陣列就是一個副本:

environments: [ 
    { 
     browserName: 'firefox', 
     platform: 'MAC', 
     cssSelectorsEnabled: true, 
     javascriptEnabled: true, 
     applicationCacheEnabled: true, 
     webStorageEnabled: true 
    } 
    ] 

任何幫助將不勝感激。

+1

您可能已經檢查了這些,但通常的罪魁禍首包括是隱藏掉在一個框架或iframe元素(你需要選擇幀),或通過動態腳本填充的元素(可以設置隱式或顯式等待)。 – rutter

+0

非常感謝您的回覆。儘管你的提示讓我想到了答案,但這並不是我期待的。我會發布我在奇怪的情況下發現的其他人有我的問題。 – iamjpg

+0

方便!感謝您發佈您的解決方案。你可能不會是唯一遇到這個問題的人。 – rutter

回答

4

想我會發布答案,因爲我知道了。我瞭解到,只要在每次瀏覽器操作後添加.end(),測試就會繼續按照我預期的方式運行。

下面是我的示例更新的代碼:

define([ 
    'intern!object', 
    'intern/chai!assert', 
    'require' 
    ], function (registerSuite, assert, require) { 
    registerSuite({ 
     name: 'search', 

     'geocode search test': function() { 
     return this.remote 
      .get('http://localhost:8181') 
      .elementByCssSelector('.modal-close').clickElement() 
       .end() 
      .elementByCssSelector('#location_search_field').clickElement().type('San Francisco, CA') 
     } 
    }); 
});