我不希望出现模态窗口

时间:2017-08-25 09:05:51

标签: ruby watir

我正在尝试上传图片。当我点击"选择图像"时,会显示模态窗口。但我不想展示这个窗口。

我必须点击"选择图片"因为在点击&#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中显示此属性而无需单击"选择图像"?之后我们可以上传图片而不点击?

Modal window after a click

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

这是我打开窗口的代码。不幸的是

这是我的第一个问题,所以我希望一切都会好的。谢谢您的回答。我希望一切都写在这里。否则,我会尝试写出更好的信息。

2 个答案:

答案 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