在GeckoWebBrowser上提交Web表单? (GeckoFX)

时间:2013-12-24 06:25:50

标签: c# html .net vb.net geckofx

有一种使用GeckoFX库提交网络表单的正确方法吗?

这就是我正在填写网页表单并提交表单,但是......好吧,我没有提交,我只是点击页面的最后一个按钮,我认为可以'是正确的方法......

框架的WebBrowser控件有一种提交网络表单的方法,但我找不到任何类似的方法来在GeckWebBrowser上正确提交网页表单。

Dim doc = GeckoWebBrowser1.Document

doc.GetElementById("id_username").
    SetAttribute("value", CStr(MyUsername))

doc.GetElementById("id_password").
    SetAttribute("value", CStr(MyPassword))

doc.GetElementsByTagName("input").
    Last.Click()

2 个答案:

答案 0 :(得分:4)

GeckoFormElement有一个提交方法。

这样的事情:

(GetElementByTagName("form").First() as GeckoFormElement).submit()

答案 1 :(得分:3)

我可以在c#中给出示例:

如果你知道输入标签和登录按钮的id值,你可以这样做:

 GeckoInputElement username = new GeckoInputElement(geckoWebBrowser1.Document.GetElementById("Username_ID").DomObject);
 GeckoInputElement Passwd = new GeckoInputElement(geckoWebBrowser1.Document.GetElementById("passwd_ID").DomObject);
 GeckoInputElement Loginbutton = new GeckoInputElement(geckoWebBrowser1.Document.GetElementById("login_button_ID").DomObject);
 username.Value = "username";
 Passwd.Value = "password";
 Loginbutton.Click();

如果您知道输入标记的name,请尝试以下操作:

GeckoInputElement username = new GeckoInputElement(geckoWebBrowser1.Document.GetElementsByName("email")[0].DomObject);
GeckoInputElement password = new GeckoInputElement(geckoWebBrowser1.Document.GetElementsByName("pass")[0].DomObject);
GeckoInputElement login = new GeckoInputElement(geckoWebBrowser1.Document.GetElemntByName("login_name")[0].DomObject);
username.Value = "username";
password.Value = "password";
login.Click();

如果你不知道输入标签的任何idname并且有类名,请试试这个,

GeckoNodeCollection nod = geckoWebBrowser1.Document.GetElementsByClassName("classname");
        foreach (GeckoNode node in nod)
        {
            if (NodeType.Element == node.NodeType)
            {

                try
                {
                    GeckoInputElement ele = (GeckoInputElement)node;
                    ele.Click();
                }
                catch (Exception ex)
                {
                    string ep = ex.ToString();
                    GeckoHtmlElement ele = (GeckoHtmlElement)no2;
                    ele.Click();
                }                    
            }
        }