web-dev-qa-db-ja.com

C#は名前で要素を取得します

Soo iveは、IDで要素を取得する方法を理解しましたが、名前で要素を取得する方法がわかりません。コードは次のとおりです。

private void SendData()
{
    webBrowser1.Document.GetElementById("textfield1").SetAttribute("value", textBox1.Text);
    webBrowser1.Document.GetElementById("textfield2").SetAttribute("value", textBox1.Text);
}

問題は私のHTMLコードにあります。textfield1はIDですが、textfield2は名前です。textfield2を取得する方法を理解したいのですが。

これが私のhtmlコードです:

<html>
    <input type="text" id="textfield1" value="TEXT1"><br>
    <input type="text" name="textfield2" value="TEXT2"><br>
    <input type="submit" value="Submit">
</html>
5
Patric Nøis

HtmlElementCollectionを取得できます。たとえば、GetElementsByTagNameメソッドを使用します。次に、HtmlElementCollectionにはGetElementsByNameメソッドがあります。

webBrowser1.Document
    .GetElementsByTagName("input")
    .GetElementsByName("textfield2")[0]
        .SetAttribute("value", textBox1.Text);
11

HtmlElementCollection.GetElementsByName を使用して、要素の値を取得できます

webBrowser1.Document.GetElementsByName("textfield2").SetAttribute("value", textBox1.Text);

編集

foreach (HtmlElement he in webBrowser1.Document.All.GetElementsByName("textfield2"))
{
    he.SetAttribute("value", textBox1.Text);
}
4

名前で要素に直接アクセスすることはできませんが、最初に入力タグを見つけ、結果にインデックスを付けて名前でタグを見つけることでアクセスできます。

webBrowser1.Document.GetElementsByTagName("input")["textfield2"]

または

webBrowser1.Document
    .GetElementsByTagName("input")
    .GetElementsByName("textfield2")[0]
1
Shanaka Rusith