如何处理使用Ruby在IE中弹出的窗口

时间:2016-12-20 06:54:03

标签: ruby watir watir-webdriver watir-classic

请帮我解决这个问题。  enter image description here

2 个答案:

答案 0 :(得分:2)

根据您的上一个问题,我假设您使用的是Watir-Classic(即使您还列出了Watir-Webdriver)。

正如@orde在评论中提到的,Watir有一个Alert类用于处理这些类型的对话框。不幸的是,就点击按钮而言,Watir-Classic只有#ok method defined

# Press the "OK" button on the JavaScript dialog.
def ok
  dialog.button(:value => "OK").click
  wait_until_not_exists
end

这对于此对话框不起作用,因为有一个"是"和"不"按钮而不是" OK"按钮。您需要使用正确的值复制此功能。

请注意,dialog是一个RAutomation窗口,不再是Watir特定代码。因此,按钮值并不总是直观的 - 它并不总是只是您看到的文本。要获得正确的值,您应该询问对话框它看到的值:

browser.alert.send(:dialog).buttons.map(&:value)
#=> ["&Yes", "&No"]

然后我们可以使用#ok方法进行相同的调用,但使用正确的值:

alert = browser.alert
alert.send(:dialog).button(:value => '&Yes').click
alert.wait_while_present

答案 1 :(得分:0)

此代码可以正常处理此类弹出窗口:

save_dialog = WIN32OLE.new("AutoItX3.Control") save_dialog.ControlClick("Windows Internet Explorer", "Yes", "[CLASS:Button;INSTANCE:1]")