【发布时间】:2011-11-17 01:15:00
【问题描述】:
在过去的几天里,我负责自动化我公司 CMS 系统的某些方面。 (我们正在使用 Drupal)
我的 ruby 脚本遇到的一个问题是让 IE 从我的机器中选择一个本地文件并将其添加到我的提交表单中。
现在我一直在阅读这方面的内容并找到了一些类似的帖子,但与我们使用的表单不同的是,浏览按钮是由 Flash 制成的,并且没有文件路径的输入字段。我的选项是输入“文件名”并单击“打开”按钮,或者第二个选项是双击文件。
所以到目前为止我解决这个问题的方法是向下切换到“浏览器按钮,然后按“Enter”键打开浏览菜单。但我现在需要选择文件名的能力。
这是我的 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
#
编辑:
需要“女仆” 需要'win32ole'
包括瓦提尔
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
【问题讨论】:
-
请发布相关的HTML,或链接到该页面,或链接到类似的页面。
-
不要'包含 watir' 要求它就是你所需要的。
标签: ruby flash internet-explorer file-upload watir