我不想出现模态 window

I do not want a modal window to appear

我正在尝试上传图片。当我点击 "Choose image" 时,显示模态 window。但是我不想显示这个 window.

我必须点击 "Choose image" 因为 html 属性(我上传图片的)在点击 "Choose image" html 属性后对 watir 不可见可见。

我用它来上传图片到 "Choose image" :

img_path = File.expand_path('../image/png.png', File.dirname(__FILE__))

在此之后我使用这个变量(img_path)并将图像设置为 "Choose image"。

现在我想截图,但模态 window 还在。

我用过:

1) browser.modal_dialog.close
2) browser.send_keys(:escape)
3) browser.window(:title => Watir::FileField::WINDOW_TITLES).close 

我尝试使用所有 "alerts" 命令,我在 watir.com GUIDES - ALERTS

找到了这些命令

我找到了这个,但效果不佳:browser.windows.last.use

我尝试执行一些脚本但没有响应:execute_script

所以问题是。单击后如何阻止或如何不显示 Windows 或浏览器 window?。 或者我们是否必须更改 html 以便此属性在 html 中可见而无需单击 "Select Image"?之后我们不用点击就可以上传图片了?

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

这是我打开 window 的代码。不幸的是。

这是我的第一个问题,希望一切顺利。谢谢您的回答。我希望一切都写在这里。否则,我会努力写出更好的资料。

问题是弹出的既不是"Browser Window"也不是"Alert.",它甚至不受浏览器控制,而是由操作系统控制。由于Watir只能控制浏览器,所以不能关闭它。

Watir 允许您上传文件而无需首先单击打开该对话框的元素。因此,删除单击图像的行,并将图像路径发送到文件字段元素。它不应该为了与之交互而强制可见。

我找到了解决办法。我希望它对其他人有帮助。 您需要像这样执行脚本:

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