1

我试图在链接处于活动状态后单击它,单击后再次产生弹出窗口(文件下载)。在这里我有2个问题

1)我启动代码并离开它。代码的作用是 - 经过漫长的过程 - 它等待链接处于活动状态。一旦链接处于活动状态,它点击链接并打开下载弹出窗口(如果一切顺利)然后它挂在那里(在任务栏中显示黄色闪烁,这意味着我必须单击资源管理器才能处理接下来的任何内容)。每次出现下载弹出窗口时我都必须单击 IE。有没有办法处理这个还是我做错了什么?

2) 下一个问题是即使我点击 IE 。即使我写了 ie.close ,IE 也不会关闭。我的代码如下:

                       ## 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

即因为某种奇怪的原因挂断了电话..?

4

2 回答 2

0

对于#2。您可能希望将代码“附加”到父窗口,然后尝试关闭它。看起来当下载对话框打开时,父窗口失去焦点。你可以试试——

即 = Watir::IE.attach(:url, ) (OR) 即 = Watir::IE.attach(:title, )

然后尝试关闭浏览器。

于 2010-07-13T07:14:06.167 回答
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

然后单击 OK 按钮,只需运行

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 google 组中的一个可爱的用户,名叫 Wesley Chen:

http://groups.google.com/group/watir-general/browse_thread/thread/41c45aae9f87da9b

于 2010-07-13T12:02:13.443 回答