5

こんにちは、Web サイトにログインするために IE を自動化しようとしていますが、問題は、入力要素に HTML ID 属性がないことです! 例えば:

<input type="text" name="user" size="15" value="">

このテキスト ボックスにテキストを挿入するには、C# をどのようにプログラムしますか?

ありがとう

4

5 に答える 5

6

次の属性を入力タグに追加しますrunat="server"id="someId"

<input id="user" type="text" size="15" runat="server">

次に、サーバー側で次のことを行います。

user.Text = "sample text";

次に、次のようなことができます。

foreach (Control c in Page.Controls)
{
    TextBox t = c as TextBox;

    if (t != null)
    {
        t.Text = "sample text";
    }
}

runat="server"しかし、属性なしで機能するかどうかはわかりません

于 2010-10-21T18:39:08.470 に答える
4

これは少し遅いことは知っていますが、これはjqueryメソッドの代替方法です。

IEでは、Webブラウザコントロールを意味すると思います。ドキュメントを入手したら、input-elementsを調べることができます。

何かのようなもの

HtmlElementCollection inputs = browser.Document.GetElementsByTagName("input");

次に、各入力をループします。入力の名前は次のコマンドで確認できます input.GetAttribute("name").Equals("user")

フィールドへの値の挿入は、

input.SetAttribute("value", "MyUserName");

于 2011-11-04T13:19:52.967 に答える
2

これは「C#でプログラム的に実行する」ことではないと思いますが、ページをjQuerifyし、後でカスタムjavascriptを実行して、コントロールの値を操作することができます。を使用している場合はWebBrowser、以下のメソッドを呼び出してスクリプトを挿入できます。

string script = "script text";
WebBrowser.Navigate(script);

jQuerifyコード

var s=document.createElement('script');
s.setAttribute('src','http://jquery.com/src/jquery-latest.js');
document.getElementsByTagName('body')[0].appendChild(s);

カスタムコード

$(document).ready(function(){$('input[type="text"][name="user"]').val('FooBar')});
于 2010-10-22T16:37:38.197 に答える
2

多分これは助けることができます:-

  • NB : http://msdn.microsoft.com/en-us/library/2te2y1x6.aspx http://msdn.microsoft.com/en-us/library/system.web.ui.htmltextwriter.aspx httpも参照してください。 ://social.msdn.microsoft.com/Search/en-US/?query=mshtml%20tutorial&ac=1

  • Windows フォーム アプリケーション プロジェクトのような新しいプロジェクトを作成し、

  • MSHTML、つまり Microsoft HTML Object Library と SHDocVw、つまり Microsoft Internet Controls の参照を追加します。

  • ボディが似ている関数を作成し、ボタンのクリック イベントのようなものにバインドします。

            /*INTERNET EXPLORER's OBJECT*/
            SHDocVw.InternetExplorer ie = new SHDocVw.InternetExplorer();
    ie.Navigate("http://www.example.com/entry"); /*GO TO EXAMPLE.COM*/
            /*WAIT UNTIL THE BROWSER IS READY AND COMPLETELY LOADED*/
    while (ie.ReadyState != SHDocVw.tagREADYSTATE.READYSTATE_COMPLETE) 
            {
               Application.DoEvents();
            }
            mshtml.HTMLDocument doc = ie.Document;
            while (doc.readyState != "complete")
            {
               Application.DoEvents();
            }
    /*GET ALL THE INPUT ELEMETS IN A COLLECTION*/
    MSHTML.IHTMLElementCollection collection=
            doc.getElementsByTagName("INPUT");
            foreach (mshtml.IHTMLElement elem in collection)
            {
              if (elem.getAttribute("name") != null)
                {
                  /*IDENTIFY THE INPUT CONTROL BY NAME ATTRIBUTE*/
          if (elem.getAttribute("name").Equals("user"))
                  {/*ENTER USER NAME*/
                   elem.setAttribute("value", "ABC");
          }
        }
    }                           
    
于 2013-11-05T17:00:09.040 に答える
1

ニコが言ったように:

<input id="user" type="text" size="15" runat="server">

しかし、あなたは試してみる必要があります:

user.Value = "sample text";

入れた!

于 2012-07-12T22:57:57.260 に答える