我想再次点击链接后点击链接 单击后生成一个弹出窗口(文件下载)。 这里我有2个问题
1)我启动代码并保留它。代码的作用是 - 很久 process -it等待链接处于活动状态。一旦链接处于活动状态 它点击链接并打开下载弹出窗口(如果一切顺利的话) 好吧)然后它挂在那里(在任务中显示黄色闪烁) 吧,这意味着我必须点击浏览器才能进行处理 什么是下一个)。每当我必须点击IE时 下载弹出窗口出现。有办法处理这个或我在做什么 有些不对劲吗?
2)下一个问题是即使我点击IE浏览器,IE也无法获得 即使我写ie.close关闭。 我的代码如下:
## if the link is active
ie.link(:text,a).click_no_wait
prompt_message = "Do you want to open or save this file?"
window_title = "File Download"
save_dialog =WIN32OLE.new("AutoItX3.Control")
save_dialog.WinGetText(window_title)
save_dialog_obtained =save_dialog.WinWaitActive(window_title)
save_dialog.WinKill(window_title)
# end
#'
#some more code -normal puts statements
#
ie.close
是因为一些奇怪的原因而挂断了吗?
答案 0 :(得分:0)
#2。您可能希望将代码“附加”到父窗口,然后尝试关闭它。看起来当下载对话框打开时,父窗口正在失去焦点。你可以试试 -
ie = Watir :: IE.attach(:url,)(OR) ie = Watir :: IE.attach(:title,)
然后尝试关闭浏览器。
答案 1 :(得分:0)
我不确定你的弹出窗口问题,但我有代码来处理我发现的一个非常令人沮丧的弹出式问题。所以我把它包括在内是为了完整性。这里你的ie浏览器对象等同于我的@browser实例对象
require 'watir\winClicker'
require 'watir\contrib\enabled_popup'
def popup_clicker(text)
begin
Timeout::timeout 2 , PopupTimeout do
if @browser.enabled_popup
hwnd = @browser.enabled_popup(5)
w = WinClicker.new
w.makeWindowActive(hwnd)
w.clickWindowsButton_hwnd(hwnd,text)
end
end
rescue PopupTimeout
# Do this line if you can't find a popup
end
@browser.wait
end
然后单击确定按钮运行
popup_clicker('OK')
您可能会注意到的一件事是,您需要手动单击通过硬件单击触发弹出窗口的按钮。 AutoIT可能会处理它,或者如果你需要,我有一个手动Watir元素点击器。先试试吧。我也有代码来检查弹出内容,如果你想要(基本上把'popup_text = w.getStaticText_hWnd(hwnd).to_s'扔进去)。
至于2)确保'ie'对象仍然设置为浏览器。尝试重新连接,正如Namrantha所说。我不知道ie.close失败了。这应该可行,取代你认为合适的@browser,XXX是窗口的标题或正则表达式的等价物:
@browser = Watir::IE.attach(:title, XXXX)
@browser.close
弹出点击者原创的信用必须转到我能找到的链条中最远的地方,Watir-General谷歌小组中一个名叫Wesley Chen的可爱用户:
http://groups.google.com/group/watir-general/browse_thread/thread/41c45aae9f87da9b