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の場合。コードを親ウィンドウに「アタッチ」してから、閉じてみてください。ダウンロードダイアログが開くと、親ウィンドウがフォーカスを失っているように見えます。あなたは試すことができます-

ie = Watir :: IE.attach(:url、)(OR)ie = Watir :: IE.attach(:title、)

次に、ブラウザを閉じてみてください。

于 2010-07-13T07:14:06.167 に答える
0

あなたのポップアップの問題についてはよくわかりませんが、私自身の非常に苛立たしいポップアップの問題であることがわかったものに対処するためのコードがあります。だから私は完全を期すためにそれを含めます。ここで、ie browser オブジェクトは、私の @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」オブジェクトがまだブラウザに設定されていることを確認してください。ナムランサが指摘したように、再接続してみてください。私は 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 に答える