2011-07-30 15 views
0

私はWebオートメーションアプリケーションで作業しています。PopUp in MSHTML

すべてのことがうまくいきます。今私は問題に固執している。

ユーザーが

ユーザーがフィールドと押しボタンを埋める、新しいポップアップが入力フィールドとボタンで開かれたリンクを介してクリックしてください。

私はこれを自動化したいと思いますが、リンクをクリックするとポップアップが表示され、Document_Completedイベントが発生しないという問題があります。

このポップアップhtmlを解析して自動化することができません。

いずれの体にも有益な提案がありますか?

+0

[Webブラウザーコントロールを使用するときにMDIコントロールの子であることをポップアップウィンドウの設定]の可能な重複(http://stackoverflow.com/questions/6470842/setting-popup-window-to-ウェブブラウザコントロールを使用している場合はmdi-controlの子である) –

答えて

1

これは非常にトリッキーです。私は何か同じような自分で作業しています。まず、ダイアログがJavascriptであるか、それともメッセージボックスであるかを確認する必要があります。 javascriptダイアログでは、これを試すことができます: http://msdn.microsoft.com/en-us/magazine/gg309183.aspx。また、システムダイアログでも動作することができますが、著者によればこれは素晴らしいことではありません。この作業を行うことができない場合は、深く掘り下げて、私が知る限りWin32Apiを操作してみる必要があります。

システムダイアログは、通常このタイプの自動化に使用するDOMの一部ではありません。 IDはなく、残りのオペレーティングシステムとは別のループで動作します(非常に低いレベルで、すべての目的から分離されています)。ダイアログボックスの詳細とWindowsでの動作については、こちらをご覧ください。http://www.winprog.org/tutorial/dialogs.html

私はこれに対する完全な解決策はありませんが、私はそれに取り組んでいます。

0

WindowFromPoint機能でポップアップすることができます。次に、ポップアップの要素にacsessするためにIAccessibleインターフェースを使用することができます。このような何か:

const uint OBJID_NATIVEOM = 0; 
Guid IID_IAcce = new Guid("{618736e0-3c3d-11cf-810c-00aa00389b71}"); 

IntPtr inpt = WindowFromPoint(p); 

object ptr1 = null; 
int l; 

l = AccessibleObjectFromWindow(inpt, OBJID_NATIVEOM, IID_IAcce.ToByteArray(), ref ptr1); 
var acc = ptr1 as IAccessible;