【发布时间】:2017-05-05 07:45:08
【问题描述】:
【问题讨论】:
-
@Carpetsmoker,我试过你的代码,但它在 IE 浏览器中不起作用。
-
有一个
Alert类可以解决问题(例如browser.alert.ok)。
标签: ruby watir watir-webdriver watir-classic
【问题讨论】:
Alert 类可以解决问题(例如browser.alert.ok)。
标签: ruby watir watir-webdriver watir-classic
根据您的最后一个问题,我假设您使用的是 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
【讨论】:
send方法调用私有方法dialog。我们可以在Alert 类中包含泛型方法,比如def click value dialog.buton(:value=>value).click wait_until_not_exists end 你说什么?
这段代码可以很好地处理这种类型的弹出窗口:
save_dialog = WIN32OLE.new("AutoItX3.Control") save_dialog.ControlClick("Windows Internet Explorer", "Yes", "[CLASS:Button;INSTANCE:1]")
【讨论】: