【问题标题】:How can I get elementbyname via webbrowser control?如何通过 webbrowser 控件获取 elementbyname?
【发布时间】:2015-01-17 03:56:32
【问题描述】:

我需要通过网络浏览器填写输入。当我尝试 getelementbyname 时,我得到空值。你能帮我解决这个问题吗?

<input onfocus="showInfoBox(this, "Varchar(100) Latin capital letters only (A-Z) and spaces between surnames")" onblur="hideInfoBox()" value="" name="Surname"><input>

这是我的代码:

    public HtmlElementCollection GetElemByName(string name)
    {
        if (webBrowser1.Document == null)
            return null;

        HtmlDocument doc = webBrowser1.Document;

        return doc.All.GetElementsByName(name);
    }

    private void button2_Click(object sender, EventArgs e)
    {
        HtmlElementCollection col = GetElemByName("Surname");
        if (col != null && col.Count > 0)
        {
            col[0].SetAttribute("Surname", "My Surname");
        }             
    }

【问题讨论】:

    标签: c# html webbrowser-control dom


    【解决方案1】:

    没有姓氏属性。

    你应该改变:

    col[0].SetAttribute("name", "My Surname");
    

    属性为:name,id,type等...

    在您的情况下,这是名称。您还应该添加input 的类型。大概类型是text

    <input type="text" onfocus="showInfoBox(this, "Varchar(100) Latin capital letters only (A-Z) and spaces between surnames")" onblur="hideInfoBox()" value="" name="Surname"><input>
    

    还有webBrowser1的值是多少,希望不是null!

    【讨论】:

    • 再次嗨,我更改了属性“名称”但仍然不起作用(返回 col.count=0)。你能解释一下我可以在输入中添加类型吗?因为它不是我的网站。我只需要填写输入并点击任何网站,而不是我的。
    • 你应该检查一下 webBrowser1 的值是多少。使用调试并检查它!
    • 不,它不为空。 webbrowser1 = System.Windows.Forms.Webrowser, webBrowser1.document = System.Windows.Forms.HtmlDocument
    猜你喜欢
    • 1970-01-01
    • 2012-04-13
    • 1970-01-01
    • 2011-09-02
    • 1970-01-01
    • 1970-01-01
    • 2013-03-03
    • 1970-01-01
    • 2011-03-17
    相关资源
    最近更新 更多