2011-09-07 138 views
1
@editLinks = $ie.link(:text => "Edit", :class =>"edit").links 
@editLinks.each do |l| l.click 
end 

我有上面的代碼,通過一系列稱爲「編輯」的鏈接迭代。當在網頁上單擊編輯時,文本框變爲啓用狀態,並且用戶能夠輸入它們。不同的文本框有不同的編輯鏈接。但是,由於某種原因,代碼沒有迭代或給我任何錯誤。它只需完成腳本而不點擊任何編輯鏈接。我已經省略了javascript onlcick的東西來顯示html。網頁上的所有編輯鏈接也都有不同的ID。迭代通過網站鏈接,並點擊它們

<a id="EditLinkButton" class="edit"><strong>Edit</strong></a> 

回答

2

閱讀Get Elements By Attributes問題後,我建議做類似如下:

@editLinks = $ie.links 
@editLinks.each do |link| 
    if link.attribute_value("class") == "edit" and link.text == "Edit" 
    link.click 
    end 
end 

有可能這樣做的更好的方式,但它的作品。

編輯:

閱讀下面的內容您的評論後,或許還有所沿的臺詞會更好

@edit_ids = %w(your edit link ids seperated by whitespace) 
@edit_ids.each do |edit_id| 
    $ie.link(:id => edit_id).click 
    # whatever else you're doing 
end 

所以你正在尋找他們,在DOM作爲這樣,當你需要他們而不是存儲他們,然後隨着頁面在測試過程中的變化而使他們的引用變得過時。值得一試。

+0

我仍然不成功,使用您編寫的代碼在IE8中對我沒有任何幫助,但是通過watir webdriver只能在firefox/chrome中單擊一個編輯鏈接。 cmd輸出表示「元素不再附加到DOM」。這是真的,因爲一旦鏈接被點擊,它會消失,因爲它被點擊後被編程爲消失,並且一旦點擊保存就會重新出現。但是,其他編輯鏈接仍然存在,不會被點擊。 – Sun

+1

閱讀後:http://watirmelon.com/2011/08/02/watir-webdriver-obselete-element-error/這個傢伙,它似乎像Watir-Webdriver定位DOM元素的方式實際上阻止你輕鬆循環在依賴於JavaScript的頁面上。 – anonygoose

+0

看看我添加到原始答案的部分。可能是你需要的,但我沒有測試它,所以要小心我不斷的錯別字和錯誤:) – anonygoose