我正在尝试上传图片。当我点击"选择图像"时,会显示模态窗口。但我不想展示这个窗口。
我必须点击"选择图片"因为在点击&#34之后,html属性(我上传图像)对于watir是不可见的;选择图像" html属性是可见的。
我用它来上传图片到"选择图片" :
img_path = File.expand_path('../image/png.png', File.dirname(__FILE__))
之后我使用这个变量(img_path)并将图像设置为"选择图像"。
现在我想拍一张截图,但模态窗口仍在这里。
我用过:
1) browser.modal_dialog.close
2) browser.send_keys(:escape)
3) browser.window(:title => Watir::FileField::WINDOW_TITLES).close
我尝试过使用所有"提醒"命令,我在watir.com GUIDES - ALERTS
找到我发现了这一点,但它也不起作用:browser.windows.last.use
我尝试执行一些脚本但没有响应:execute_script
所以问题是。单击后如何阻止或如何不显示Windows或浏览器窗口? 或者我们是否必须更改html以便在html中显示此属性而无需单击"选择图像"?之后我们可以上传图片而不点击?
browser.iframe(class: "modalwin").present?
browser.iframe(class: "modalwin").element(xpath that click on choose image).click
img_path = File.expand_path('../image/png.png', File.dirname(__FILE__))
browser.iframe(class: 'modalwin').file_field(path to set file).set img_path
browser.iframe(class: "modalwin").element(waiting xpath).wait_while_present
browser.iframe(class: "modalwin").link(xpath that just click on button OK).click
这是我打开窗口的代码。不幸的是
这是我的第一个问题,所以我希望一切都会好的。谢谢您的回答。我希望一切都写在这里。否则,我会尝试写出更好的信息。
答案 0 :(得分:2)
问题在于弹出的内容既不是浏览器窗口"也不是警报。"它甚至不受浏览器控制,而是由操作系统控制。由于Watir只能控制浏览器,因此无法解除它。
Watir允许您在不首先单击打开该对话框的元素的情况下上传文件。因此,删除单击图像的行,只需将图像路径发送到文件字段元素。它不应强制实现可见性以便与之交互。
答案 1 :(得分:0)
我找到了解决方案。我希望它对别人有所帮助。 你需要像这样执行脚本:
browser.execute_script(
'HTMLInputElement.prototype.click = function() {'\
" if(this.type !== 'file') HTMLElement.prototype.click.call(this);"\
'}'
)
img_path = File.expand_path(opts[:image_path], File.dirname(__FILE__))
browser.iframe(class: modal_win).element(:xpath, choose_image).click
browser.iframe(id: modal_iframe1).file_field(:name, 'data').set img_path