簡體   English   中英

如何通過不使用Ruby watir網頁腳本中的睡眠來避免超時?

[英]How to avoid timout by NOT using sleep in Ruby watir web page scripting?

  [5040:6784:0906/150930:FATAL:platform_canvas.cc(70)] SK_CRASH              ] 55%
C:/Ruby193/lib/ruby/1.9.1/net/protocol.rb:146:in `rescue in rbuf_fill': Timeout::Error (Ti
meout::Error)

        from letsmt_rr_filetype_uploader.rb:43:in `block in <main>'
        from letsmt_rr_filetype_uploader.rb:39:in `each'
        from letsmt_rr_filetype_uploader.rb:39:in `<main>'

這是文件上傳進度中的rbuf-fill timout錯誤。 是否可以通過* *使用睡眠來避免這種情況?

這是用於文件上傳的腳本即時消息:

puts "Tiek veikta atlasīto failu ielāde..."
progress = ProgressBar.create(:title => "Failu ielāde:", :progress_mark => "|", :format => "%t [%B] %p%%", :total => kolekcija.length)
kolekcija.each do |fails|
    @fails = fails[0]
    @b.div(:id, "pageHeader").link(:text, "Corpora").click
    @b.span(:class => "btnText", :text => "Upload corpus").when_present.click
    @b.text_field(:id, "corp_save_field_title").set("TestAuto #{File.basename(@fails)}") # Name / Title
    @b.frame(:id, "uploadManagerFrame").frame(:index, 0).file_field(:id, "FileUploadHTML").set(@fails) # File absolute path
    @b.frame(:id, "uploadManagerFrame").frame(:index, 0).span(:text, "Upload").click
    @b.frame(:id, "uploadManagerFrame").table(:id, "ctrlGetUploadedFiles_gvUploadedFiles").wait_until_present
    @b.frame(:id, "uploadManagerFrame").select_list(:id, "ctrlGetUploadedFiles_gvUploadedFiles_ctl02_ddlChooseType").option(:value, "#{fails[1]}").select
    @b.send_keys :tab
    if @b.frame(:id, "uploadManagerFrame").select_list(:id, "ctrlGetUploadedFiles_gvUploadedFiles_ctl02_ddlChooseLanguage").enabled?
        @b.frame(:id, "uploadManagerFrame").select_list(:id, "ctrlGetUploadedFiles_gvUploadedFiles_ctl02_ddlChooseLanguage").select("English")
        # @b.frame(:id, "uploadManagerFrame").select_list(:id, "ctrlGetUploadedFiles_gvUploadedFiles_ddlChooseLanguage_0").option(:value, "#{@filelang}".select
    end
    @b.send_keys :tab
    @b.span(:class => "btnText", :text => "Save", :index => 1).when_present.click
    @b.frame(:id, "uploadManagerFrame").table(:id, "ctrlGetUploadedFiles_gvUploadedFiles").wait_until_present
    sleep 15
    progress.increment
end

我之前已經看到過這個問題,它是由頁面上通過ajax加載的元素引起的,該元素沒有響應,因此導致頁面以相同的方式超時。 最終,解決此問題的唯一方法是將特定調用包裝在try catch中。 除了try catch之外,嘗試在文件上傳后出現的任何確認信息中將睡眠更改為wait_until_present。 如果那里沒有一個,則可能值得在幕后添加一個,以確保文件已完成上傳。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM