0
我將查找頁面上的所有li元素,它們在其herf元素中都有唯一的id,其中一些元素被隱藏並且點擊頁面上的更多按鈕可以使它們可見。這裏是代碼:ruby webdriver錯誤:找不到緩存中的元素 - 可能頁面在查找後發生了變化
def open_template id=0
sleep 1
#try to get all the li elements that has class named like "test..." and put them into a list
box_list=browser.lis.find_all { |div| div.class_name =~ /^test/ }
sleep 2
#go though the list
box_list.each do |each|
str=each.a.attribute_value("href")
#the tid number of the element should match to id
if /\?tid=\d+/.match(str)[0].gsub!("?tid=", "").to_i==id
# if the element is hidden, should click the "more" button and get into another page
if each.attribute_value("style")=="display: none;"
each.parent.parent.div(class: "title_me_h").a(class: "more").click
sleep 2
# begin the same thing on the new page
open_template(id)
end
begin
#if the element matchs and isn't hidden, do a click
each.a(class: "li_box_cj").wait_until_present
each.a(class: "li_box_cj").click
rescue Exception => e
puts "ERROR: #{e.message}"
end
break
end
end
end
當我試圖找到一個隱藏的li元素,執行後,我得到了高速緩存錯誤未找到元素的代碼,但最後的動作「點擊」被處決。我不明白爲什麼,有誰能給我一些提示?我已閱讀所有有關stackoverflow的相關問題,但沒有得到答案。謝謝你的提前。
單擊之後,DOM會更改(使li可見),但您嘗試循環的列表在單擊之前生成,因此異常是拋出。 –
非常感謝您的回覆,我的代碼中存在邏輯錯誤,需要一個「其他」才能跳出循環,非常感謝您 – user2256777