我需要在C#中按类型获取元素,HTML看起来像这样:
<button type="submit" class="orangeBtn">Send Invitations</button>
我希望它能够在我可以调用它(“点击”)的地方,但它似乎不能在C#中工作。我目前的代码是:
HtmlElement m_SubmitField = m_Browser.Document.All["orangeBtn"];
if (m_SubmitField != null)
m_SubmitField.InvokeMember("click");
有没有另外一种工作方式可以做到这一点?
这不是我的服务器,所以我无法编辑HTML或添加jquery。
我正在制作一个自动应用程序,将邀请发送给我想要加入的朋友,但他们创建的按钮没有上面看到的ID或名称,所以无论如何都要在C#中调用它(“点击”)使用不同的方法?
感谢。
答案 0 :(得分:6)
您可以使用GetElementsByTagName
。
var elements = m_Browser.Document.GetElementsByTagName("button");
foreach (HtmlElement element in elements)
{
// If there's more than one button, you can check the
//element.InnerHTML to see if it's the one you want
if (element.InnerHTML.Contains("Send Invitations"))
{
element.InvokeMember("click");
}
}
答案 1 :(得分:1)
我尝试了以下代码,并且成功了。
HtmlElementCollection htmlcol = ((WebBrowser)sender).Document.GetElementsByTagName("input");
for (int i = 0; i < htmlcol.Count; i++)
{
if (htmlcol[i].GetAttribute("value") == "Search")
{
htmlcol[i].InvokeMember("click");
}
}
我已经针对以下情况尝试了此代码
<input type="submit" value="Search">
你也可以试试这样的html标签,我希望它对你有用...... 享受
答案 2 :(得分:-3)
没有id或名称的按钮会提交它包含的任何形式 - 如果你知道HTML,那么表单是否有id?如果是这样,你可以通过它的id找到表单并调用它的提交方法。
事实上,您可能最好找出该表单的所有字段,然后自己发布:
var inputs = new NameValueCollection();
inputs.Add("field1", "value1");
inputs.Add("field2", "value2");
inputs.Add("field3", "value3");
System.Net.WebClient Client = new WebClient();
Client.Headers.Add("Content-Type", "application/x-www-form-urlencoded");
byte[] POSTResultData = Client.UploadValues(postUrl, inputs);