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