1

情報を追跡する仕事用に作成したプログラムがあります。この情報は、さまざまなイントラネット サイトから入手します。私は自分のプログラムにフォームを組み込みたいと考えています。これは基本的にカスタマイズされた Web ブラウザーであり、これらのサイトをより簡単にナビゲートできるようになります。これは私にとって学習プロジェクトなので、私の経験不足を許してください。

この質問については、ブラウザー コントロールを使用してページを読み込んだ後、文字列に格納された資格情報からそのページにログインできる方法を探しています。この情報を入力しようとしているサイトの HTML コードにアクセスできず、GetElementId を介してこれを行う方法に関する多くのチュートリアルを見てきましたが、Firebug を使用した後、入力する必要がある 2 つのテキストボックスのどちらも見つかりませんでしたID(とにかく見ることができます)。サイトは決して変更されず、GetElementFromPoint の使用を検討しましたが、この方法でどのように処理すればよいか分からず、最適とは思えませんでした。GetElementsByTagName が最善の方法のようですが、コードの実装方法がわかりません。

これは、firebugから取得できた2つの要素の情報です。

ユーザー名テキストボックス: <input type="text" name="j_username" size="12" onblur="this.value=this.value.toLowerCase(); setUserIdCookie();" click="this.value=this.value.toLowerCase();" onkeyup="this.value=this.value.toLowerCase();">

パスワードテキストボックス:

<input type="password" onkeypress="checkCapsLock( event )" name="j_password" size="12">

たとえば、WinformusernameStringから j_username に渡し、次にj_password に渡し、Web コントロール内のボタンpasswordStringをクリックする 必要があります。<input type="submit" name="submit" value="Login">この 1 つのサイトからこれを行う方法のアイデアを得ることができれば、他のサイトにも実装するのに十分な学習ができるはずです。

ご協力ありがとうございます。他の情報が必要な場合はお知らせください。

完全な HTML コード:

<form method="POST"action="j_security_check" name="login"> 
<table border="0"width="30%"cellspacing="3"cellpadding="2">
  <tr>
     <td class="default"><b>Login</b></td>      
     <td class="default"><input onkeyup="this.value=this.value.toLowerCase();"
      click="this.value=this.value.toLowerCase();" 
      onblur="this.value=this.value.toLowerCase(); setUserIdCookie();"    
       type="text"size="12" name="j_username"></td>     
  </tr>     
  <tr>      
      <td class="default"><b>Password</b></td>      
      <td class="default"><input type="password" size="12"
      name="j_password"onKeyPress="checkCapsLock( event )"></td>    
  </tr>     

  <tr>      
  <td colspan="2" align="center"><p class="default">  
  <inputtype="submit"value="Login"name="submit"></td>   
  </tr>
  </table> 
  </form>

編集

ボックスに入力する方法を見つけました

            var x = webBrowser1.Document.All.GetElementsByName("j_username");
        x[0].InnerText = (usernameString);
        var y = webBrowser1.Document.All.GetElementsByName("j_password");
        y[0].InnerText = (passwordString);

しかし、ログインボタンをクリックする方法を理解するのに苦労しています

4

1 に答える 1

1

もちろん、この素敵な長い投稿を投稿し、これに何時間も取り組んだ後、私はついに答えに出くわしました。私がここにいたのと同じ問題を抱えている人にとっては、これを達成する方法です. 私のシナリオでは、このソリューションはうまく機能します:

private void button4_Click(object sender, EventArgs e)
{
   //Set username and password strings
   string usernameString = "username";
   string passwordString = "password";

   //Input in to username field
   var x = webBrowser1.Document.All.GetElementsByName("j_username");
   x[0].InnerText = (usernameString);

   //Input in to password fields
   var y = webBrowser1.Document.All.GetElementsByName("j_password");
   y[0].InnerText = (passwordString);

   //Click the login button
   var s = webBrowser1.Document.All.GetElementsByName("submit");
   s[0].InvokeMember("click");
}
于 2013-04-17T21:00:08.767 に答える