Ruby 我不希望出现模式窗口

Ruby 我不希望出现模式窗口,ruby,watir,Ruby,Watir,我正在尝试上传图片。当我单击“选择图像”时,将显示模式窗口。但我不想展示这个窗口 我必须点击“选择图像”,因为在点击“选择图像”后,html属性(我上传的图像)对于watir不可见,html属性可见 我用这个上传图像来“选择图像”: 在此之后,我使用这个变量(img_path),并将image设置为“Choose image” 现在我想截图,但模态窗口仍然在这里 我用过: 1) browser.modal_dialog.close 2) browser.send_keys(:escape) 3)

我正在尝试上传图片。当我单击“选择图像”时,将显示模式窗口。但我不想展示这个窗口

我必须点击“选择图像”,因为在点击“选择图像”后,html属性(我上传的图像)对于watir不可见,html属性可见

我用这个上传图像来“选择图像”:

在此之后,我使用这个变量(img_path),并将image设置为“Choose image”

现在我想截图,但模态窗口仍然在这里

我用过:

1) browser.modal_dialog.close
2) browser.send_keys(:escape)
3) browser.window(:title => Watir::FileField::WINDOW_TITLES).close 
我尝试使用所有“警报”命令,我在watir.com指南-警报中找到了这些命令

我找到了这个,但它不起作用:
browser.windows.last.use

我试图执行一些脚本,但没有响应:
execute\u script

所以问题是。单击后如何阻止或不显示窗口或浏览器窗口?。 或者我们是否必须更改html,使该属性在html中可见,而无需单击“选择图像”?之后,我们可以上传图像,而无需点击

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


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

问题是,弹出的既不是“浏览器窗口”也不是“警报”。它甚至不是由浏览器控制的,而是由操作系统控制的。因为Watir只能控制浏览器,所以它不能关闭它


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

问题是,弹出的既不是“浏览器窗口”也不是“警报”。它甚至不受浏览器控制,而是由操作系统控制。因为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

我找到了解决办法。我希望它能帮助别人。 您需要执行如下脚本:

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

单击“选择图像”时,会发生什么情况?为什么一些html在之前对watir不可见,而在之后变为可见?您好,首先感谢您的回复。1) 当我点击“选择图像”时,模式窗口会像我添加的图片一样出现。2) 第二个问题很难回答,但这是建立我们的全球价值链模式窗口。Html在我点击“选择图像”后是可见的。当你点击“选择图像”时会发生什么?为什么一些html在之前对watir不可见,而在之后变为可见?您好,首先感谢您的回复。1) 当我点击“选择图像”时,模式窗口会像我添加的图片一样出现。2) 第二个问题很难回答,但这是建立我们的全球价值链模式窗口。在我点击“选择图像”后,Html是可见的。所以我们必须在gvc中更改Html属性。属性必须是可见的,明白吗。非常感谢。但是这里有一些用ruby关闭操作系统窗口的脚本吗?对于我的英语,我希望你知道我的意思。不,你不需要改变html属性。您不必打开模式,只需在FileField元素上使用
#set
。就是这样。但正如我所说,文件字段只在GUI中可见。但在html中,代码只有在单击后才可见。如果您没有单击“选择图像”,则无法找到html属性,因为它是不可见的。此属性是动态的,可以在单击后显示。您是说在单击其他元素之前,DOM中不存在文件字段吗?如果它在那里,无论它的可见性如何,Watir都可以与之交互。您好,我再次尝试了它,但没有回应。文件未上载,因为watir无法查看。我使用的是:img_path=File.expand_path('../image/png.png',File.dirname(File))browser.iframe(class:'modalwin')。File_字段(设置文件的路径)。set img_path它找不到File_字段路径,就像我说的,它不可见,watir无法处理它。Html属性使用文件_字段,点击“选择图像”后可见,因此我们必须在gvc中更改Html属性。属性必须是可见的,明白吗。非常感谢。但是这里有一些用ruby关闭操作系统窗口的脚本吗?对于我的英语,我希望你知道我的意思。不,你不需要改变html属性。您不必打开模式,只需在FileField元素上使用
#set
。就是这样。但正如我所说,文件字段只在GUI中可见。但在html中,代码只有在单击后才可见。如果您没有单击“选择图像”,则无法找到html属性,因为它是不可见的。此属性是动态的,可以在单击后显示。您是说在单击其他元素之前,DOM中不存在文件字段吗?如果它在那里,无论它的可见性如何,Watir都可以与之交互。您好,我再次尝试了它,但没有回应。文件未上载,因为watir无法查看。我使用的是:img_path=File.expand_path('../image/png.png',File.dirname(File))browser.iframe(class:'modalwin')。File_字段(设置文件的路径)。set img_path它找不到File_字段路径,就像我说的,它不可见,watir无法处理它。单击“选择图像”后,可以看到使用文件\字段的Html属性
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