2017-07-19 4 views
2

開いているIE11ウィンドウに次のC#コードで接続しました。しかし、私はそれを読み取って設定する必要があるので、どのようにgetElementIDを使ってドキュメント要素にアクセスするのか分かりません。C#IE11オートメーション - ウィンドウハンドルのみを指定した文書フォーム要素の設定

//Import the FindWindow API to find our window 
[DllImportAttribute("User32.dll")] 
private static extern int FindWindow(String ClassName, String WindowName); 

//Import the SetForeground API to activate it 
[DllImportAttribute("User32.dll")] 
private static extern IntPtr SetForegroundWindow(int hWnd); 

...... 

// Find the IE window 
int hWnd = FindWindow(null, "ACME Form Input - Internet Explorer"); 

if (hWnd > 0) // The IE window was found. 
{ 
    // Bring the IE window to the front. 
    SetForegroundWindow(hWnd); 

上記のコードで、IEドキュメントにアクセスしてフォーム要素を取得および設定するにはどうすればよいですか?助けてください!

アンディ

+0

あなたの質問には本当に答えているわけではないのでコメントしていますが、セレンはウェブブラウザを自動化する(おそらくもっと良い)方法です。 –

+0

私がしていることの1つは、新しいテキストファイルのためのフォルダを見て、テキストファイルを開き、各行をループし、処理のためにウェブページにデータを渡すことです。セレンもこれを行うことができますか? – Andy

+0

私はあなたの目標を達成すると感じているので、私は先に進み、回答として投稿しました –

答えて

0

あなたのコメントを受けて、私は、Webサイトの自動化のためのセレン、その後、フォルダを監視するために、テキストファイルの操作のための標準System.IOのものをfilesystemwatcherクラスのようなものを使用してお勧めします。基本的に、セレンはクロム、ファイアフォックスなど(またはヘッドレス)として動作し、ページ上のhtml要素を見つけてテキスト、ボタンなどを送信することができます。

+0

Chromeを使用してSeleniumを稼働させました。しかし、Chromeの公開インスタンスにリンクする方法はないようです。一度に新しいブラウザインスタンスを起動する必要がありますか? – Andy

+0

正しい。プロファイルを使用して特定の設定でドライバを読み込むことができますが、毎回クッキーや情報が消去される場合は、また、ドライバーが正しく処分されていることを確認して、多数のプロセスが実行されていないようにする必要があります。 –

0

希望する方法でドキュメント要素にアクセスするにはieshドキュメントをmshtmlドキュメントにキャストまたは割り当てる必要があります。あなたはmshtmlへの参照を追加する必要があります、私は割り当てを示す下の例があります。

 SHDocVw.ShellWindows shellWindows = new SHDocVw.ShellWindows(); 

     Console.WriteLine("Starting Search\n\n\n"); 

     foreach (SHDocVw.InternetExplorer ie in shellWindows) 
     { 
      if (ie.LocationURL.Contains("aavtrain")) 
      { 
       Console.WriteLine(ie.LocationURL); 
       Console.WriteLine("\n\n\n\n"); 
       Console.WriteLine("FOUND!\n"); 

       mshtml.HTMLDocument document = ie.Document; 
       mshtml.IHTMLElementCollection elCol = document.getElementsByName("user_name"); 
       mshtml.IHTMLElementCollection elCol2 = document.getElementsByName("password"); 
       mshtml.IHTMLElementCollection elCol3 = document.getElementsByName("Submit"); 

       Console.WriteLine("AutofillPassword"); 


       foreach (mshtml.IHTMLInputElement i in elCol) 
       { 
        i.defaultValue = "John"; 
       } 

       foreach (mshtml.IHTMLInputElement i in elCol2) 
       { 
        i.defaultValue = "Password"; 
       } 

       Console.WriteLine("Will Click Button in 2 seconds"); 
       Thread.Sleep(2000); 

       foreach (mshtml.HTMLInputButtonElement i in elCol3) 
       { 

        i.click(); 
       } 


      } 
     } 

     Console.WriteLine("Finished"); 
関連する問題