За последние пару дней мне было поручено автоматизировать некоторые аспекты систем CMS моей компании.(Мы используем Drupal)
Одна из проблем, с которой я сталкиваюсь с моим скриптом ruby, заключается в том, чтобы IE выбрал локальный файл на моей машине и добавил его в форму отправки.
Теперь я читал об этом и нашел несколько симулятивных постов, но отличие от формы, которую мы используем, состоит в том, что кнопка обзора сделана из флэш-памяти, и нет поля ввода для пути к файлу,У меня есть варианты: либо ввести «Имя файла» и щелкнуть по кнопке «Открыть», либо второй вариант - дважды щелкнуть файл.
Таким образом, до сих пор я решил, что этоПерейдите на вкладку «Кнопка браузера», а затем нажмите клавишу «Ввод», чтобы открыть меню просмотра. Но теперь мне нужна возможность выбрать имя файла.
Это мой файл Ruby.
require 'watir'
include Watir
ie = Watir::IE.new
ie.goto ("file:///C:/Ruby193/bin/ruby-capybara/features/step_definitions/form.html")
ie.text_field(:id, "edit-submitted-ugc-video-title").set("Title")
ie.text_field(:id, "edit-submitted-ugc-video-firstname").set("First Name")
ie.text_field(:id, "edit-submitted-ugc-video-lastname").set("Last Name")
ie.text_field(:id, "edit-submitted-ugc-video-phonenumber").set("01234567891")
ie.text_field(:id, "edit-submitted-ugc-video-location").set("London")
ie.text_field(:id, "edit-submitted-ugc-video-email").set("test@test.com")
ie.text_field(:id, "edit-submitted-ugc-video-email2").set("test@test.com")
ie.send_keys('{TAB}')
ie.send_keys('{ENTER}')
uploadfile = "V:\GIR-FP-WSD-QA\Test Media Files\Video1.mp4"
assert_equal uploadfile, ie.file_field(:name,"Video1.mp4").value
ie.button(:name, 'upload').click
#
Отредактировано:
требуют 'watir' требуют 'win32ole'
включают Watir
ie = Watir::IE.new
ie.goto ("file:///C:/Ruby193/bin/ruby-capybara/features/step_definitions/form.html")
ie.text_field(:id, "edit-submitted-ugc-video-title").set("Title")
ie.text_field(:id, "edit-submitted-ugc-video-firstname").set("First Name")
ie.text_field(:id, "edit-submitted-ugc-video-lastname").set("Last Name")
ie.text_field(:id, "edit-submitted-ugc-video-phonenumber").set("01234567891")
ie.text_field(:id, "edit-submitted-ugc-video-location").set("London")
ie.text_field(:id, "edit-submitted-ugc-video-email").set("test@test.com")
ie.text_field(:id, "edit-submitted-ugc-video-email2").set("test@test.com")
ie.send_keys('{TAB}')
ie.send_keys('{ENTER}')
class FileField < InputElement
# set the file location in the Choose file dialog in a new process
# will raise a Watir Exception if AutoIt is not correctly installed
def set(setPath)
assert_exists
require 'watir/windowhelper'
WindowHelper.check_autoit_installed
begin
thrd = Thread.new do
system("rubyw -e \"require 'win32ole'; @autoit=WIN32OLE.new('AutoItX3.Control');
waitresult=@autoit.WinWait 'Bird annoys Cat.mp4', '', 15; sleep 1; if waitresult == 1\" -e
\"@autoit.ControlSetText 'Bird annoys Cat.mp4', '', 'Edit1', '#{setPath}';
@autoit.ControlSend 'Bird annoys Cat.mp4', '', 'Button2', '{ENTER}';\" -e \"end\"")
end
thrd.join(1)
rescue
raise Watir::Exception::WatirException, "Problem accessing Choose file dialog"
end
click
$end
ie.button(:name, 'upload').click