Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/89.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在GeckoWebBrowser上提交web表单?(壁虎)_C#_Html_.net_Vb.net_Geckofx - Fatal编程技术网

C# 在GeckoWebBrowser上提交web表单?(壁虎)

C# 在GeckoWebBrowser上提交web表单?(壁虎),c#,html,.net,vb.net,geckofx,C#,Html,.net,Vb.net,Geckofx,有一种使用GeckoFXlibrary提交web表单的正确方法吗 这就是我填写网页表单并提交表单所做的,但是…我没有提交,我只是点击页面的最后一个按钮,我认为这不是正确的方式 框架的WebBrowser控件有一个提交web表单的方法,但我找不到任何类似的方法在GeckWebBrowser上正确提交web表单 Dim doc = GeckoWebBrowser1.Document doc.GetElementById("id_username"). SetAttribute("value

有一种使用
GeckoFX
library提交web表单的正确方法吗

这就是我填写网页表单并提交表单所做的,但是…我没有提交,我只是点击页面的最后一个按钮,我认为这不是正确的方式

框架的
WebBrowser
控件有一个提交web表单的方法,但我找不到任何类似的方法在
GeckWebBrowser
上正确提交web表单

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()
我可以用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();
如果您知道输入标记的名称,请尝试以下方法:

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();
如果您不知道任何输入标记的
id
name
,并且有类名,请尝试以下操作:

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();
                }                    
            }
        }  

GeckoFormElement有一个submit方法

比如说:

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

你试过这个吗?有任何异常或错误吗?@xpertgun正常工作,不会抛出任何异常。。。但我只是想知道如何正确地使用
WebBrowser1.Document.Forms(0).InvokeMember(“submit”)
提交表单,这是一般用法,我无法硬编码输入值/名称/标记或您答案中的其他类似内容,抱歉,我只是想知道是否存在类似的通用产品。无论如何,谢谢你!我已经搜索了几个小时,这是第一件有效的事情!Thanks@Tom抱歉迟到了,我不知道如何修改代码。。。我使用的是
GeckoDocument
而不是
GeckoFormElement
,无论如何,我试图设置一个新的
GeckoFormElement
,但我不知道如何设置,因为我无法将
GeckoDocument
转换为
GeckoFormElement
。。。我需要一个例子来使用你的
submit
方法和我在问题中发布的代码,谢谢。好的,我自己找到了正确的类型:
CType(geckowebrowser1.Document.GetElementsByTagName(“表单”)。首先,GeckoFormElement)。submit()
或者这是相同的
geckowebrowser1.Document.GetElementsByTagName(“表单”).Cast(GeckoFormElement的).First.submit()