Я столкнулся с проблемой, когда я вызываю метод click_no_wait для элемента управления, который отображает поле «Загрузка файла». Работает нормально с первого раза. Я использую Auto It для обработки окна загрузки файла и сохранения файла в определенном месте. Теперь, когда я пытаюсь использовать click_no_wait для того же элемента управления, он не отображает поле загрузки файла, но если я обновляю браузер перед вызовом click_no_wait, он отображает поле загрузки файла. Итак, мой вопрос заключается в том, что Auto It не выпускается, и поэтому click_no_wait не может найти элемент управления или что-то не так с реализацией метода click_no_wait.
Среда: ОС: Microsoft XP SP2 Ruby: ruby 1.8.6 patchelevel 398 Watir: 1.8.1
Вот как я использую элемент управления
def click_export_button
control = browser.button(:id,'export-button')
$DEBUG = true
#browser.refresh #- If this line is not commented, the dialog appears
control.click_no_wait #-- I replace click_no_wait with click and/or click! and the code freezes, so the control is found
download_file("C:\\test.csv")
$DEBUG = false
end
Вот код для скачивания файла
def download_file(filePath = nil)
autoIt = WIN32OLE.new("AutoItX3.Control")
timeout = 10
fileDownloadWindowTitle = "File Download"
handle = autoIt.WinWait(fileDownloadWindowTitle, "Do you want to open or save this file?", timeout)
retVal = nil
unless (handle.eql? @autoItError)
autoIt.WinActivate(fileDownloadWindowTitle)
autoIt.ControlClick(fileDownloadWindowTitle, "", "&Save")
saveWindowTitle = "Save As"
windowHandle = autoIt.WinWaitActive(saveWindowTitle, "", timeout)
if (windowHandle == 1)
retVal = save_file(saveWindowTitle, autoIt, filePath) #-- function to save the file to the location
end
else
puts "Unable to download the file"
end
autoIt.ole_free
return retVal
end
Вот ошибка, которую я получаю
ruby -e "$:.unshift('c:/ruby/lib/ruby/gems/1.8/gems/watir-1.8.1/lib/
watir/win32ole').unshift('c:/ruby/lib/ruby/gems/1.8/gems/
commonwatir-1.8.1/lib').unshift('c:/ruby/lib/ruby/gems/1.8/gems/
firewatir-1.8.1/lib').unshift('c:/ruby/lib/ruby/gems/1.8/gems/
watir-1.8.1/lib');require 'c:/ruby/lib/ruby/gems/1.8/gems/watir-1.8.1/
lib/watir/core';Watir::Button.new(Watir::IE.attach(:hwnd,
6751822), :unique_number, 3).click!();"
c:/ruby/lib/ruby/gems/1.8/gems/watir-1.8.1/lib/watir/element.rb:58:in
`assert_exists': Unable to locate element, using :unique_number, 3
(Watir::Exception::UnknownObjectException)
from c:/ruby/lib/ruby/gems/1.8/gems/watir-1.8.1/lib/watir/
element.rb:275:in `click!'
from -e:1
Любая помощь будет оценена. заранее спасибо