こんにちは、Web サイトにログインするために IE を自動化しようとしていますが、問題は、入力要素に HTML ID 属性がないことです! 例えば:
<input type="text" name="user" size="15" value="">
このテキスト ボックスにテキストを挿入するには、C# をどのようにプログラムしますか?
ありがとう
こんにちは、Web サイトにログインするために IE を自動化しようとしていますが、問題は、入力要素に HTML ID 属性がないことです! 例えば:
<input type="text" name="user" size="15" value="">
このテキスト ボックスにテキストを挿入するには、C# をどのようにプログラムしますか?
ありがとう
次の属性を入力タグに追加します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"
しかし、属性なしで機能するかどうかはわかりません
これは少し遅いことは知っていますが、これはjqueryメソッドの代替方法です。
IEでは、Webブラウザコントロールを意味すると思います。ドキュメントを入手したら、input-elementsを調べることができます。
何かのようなもの
HtmlElementCollection inputs = browser.Document.GetElementsByTagName("input");
次に、各入力をループします。入力の名前は次のコマンドで確認できます
input.GetAttribute("name").Equals("user")
フィールドへの値の挿入は、
input.SetAttribute("value", "MyUserName");
これは「C#でプログラム的に実行する」ことではないと思いますが、ページをjQuerifyし、後でカスタムjavascriptを実行して、コントロールの値を操作することができます。を使用している場合はWebBrowser
、以下のメソッドを呼び出してスクリプトを挿入できます。
string script = "script text";
WebBrowser.Navigate(script);
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')});
多分これは助けることができます:-
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");
}
}
}
ニコが言ったように:
<input id="user" type="text" size="15" runat="server">
しかし、あなたは試してみる必要があります:
user.Value = "sample text";
入れた!