【问题标题】:How to handle windows pop up in IE using Ruby如何使用 Ruby 处理 IE 中弹出的窗口
【发布时间】:2017-05-05 07:45:08
【问题描述】:

请帮助我如何处理此弹出窗口。

【问题讨论】:

标签: ruby watir watir-webdriver watir-classic


【解决方案1】:

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

正如@orde 在 cmets 中提到的,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

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

请注意,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

【讨论】:

  • 我试过了: save_dialog = WIN32OLE.new("AutoItX3.Control") save_dialog.ControlClick("Windows Internet Explorer", "Yes", "[CLASS:Button;INSTANCE:1]")这段代码运行良好。
  • @JustinKo 处理这个错误的好方法。但是为什么需要通过send方法调用私有方法dialog。我们可以在Alert 类中包含泛型方法,比如def click value dialog.buton(:value=>value).click wait_until_not_exists end 你说什么?
【解决方案2】:

这段代码可以很好地处理这种类型的弹出窗口:

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

【讨论】:

    猜你喜欢
    • 2015-08-03
    • 2013-07-20
    • 1970-01-01
    • 1970-01-01
    • 2015-02-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-09
    相关资源
    最近更新 更多