【发布时间】:2015-02-17 17:06:11
【问题描述】:
我正在尝试使用 watir-webdriver 自动执行从 html 页面中选择本地文件的过程
我有以下html
<body>
<form method="post" action="upload" enctype="multipart/form-data">
test file to upload: <input type="file" name="file" size="60" id="test"/>
<input type="submit" value="Upload" name="upload" id="upload" />
</form>
</body>
我正在尝试使用 id 或 test 单击输入,并设置我希望使用 watir-webdriver 上传的本地文件的路径。
我可以使用下面的点击按钮来调出选择窗口
@browser.goto 'http://www.test.com'
@browser.button(:id => 'test').click
但是,我正在尝试使用以下方法(通过研究,这似乎是正确的方法。但不起作用)
@browser.file_field(:name => 'file').set("C:\\path\\to\\test\\file\\validTest.xml")
导致以下错误
Watir::Exception::UnknownObjectException: unable to locate element, using {:name=>"file", :tag_name=>"input", :type=>"file"}
尝试
@browser.button(:id => 'test').set("C:\\path\\to\\test\\file\\validTest.xml")
导致以下错误
NoMethodError: undefined method `set' for #<Watir::Button:0x3859920>
有人可以帮忙吗?我很难理解为什么 file_field 选项不起作用。
【问题讨论】:
-
如果您收到
UnknownObjectException,请尝试@browser.file_field(:name => 'file').exists?。如果false,那么该元素可能不是真正可定位的(例如,在框架中、异步加载等)。而Button类没有.set方法,所以这个错误是合法的。
标签: ruby automation watir-webdriver filefield