[英]c# click on html button
我在webbrowser控件中加載了一個外部網站並嘗試單擊一個按鈕:
<input type="submit" name="btnSubmit" class="rlg-btn-primary" value="Save changes"/>
這個C#代碼:
var elems = webBrowser1.Document.GetElementsByTagName("INPUT");
foreach (HtmlElement elem in elems)
{
if (elem.GetAttribute("value") == "Save changes")
{
elem.InvokeMember("click");
}
}
問題是什么也沒發生。 沒有錯誤信息。 頁面只是靜止不動,什么也沒有發生。 我相信代碼是正確的。 有什么想法嗎? 提前致謝。
您需要使用的HTML Tag
提供的是:這是<asp:Button>
(將呈現為<input type="button">
而不是普通的<input type="submit">
您需要將HTML Markup
更改為這一HTML Markup
<asp:Button ID="your_button_id" runat="server" OnClick="your_button_id_Click" />
然后在您的代碼后面,不要忘記添加
void your_button_id_Click(Object sender, EventArgs e)
{
... // Your code goes here
}
對於OnClick
事件,您可以按Ctrl + 空格鍵以顯示現有OnClick
事件的自動完成功能,或創建一個新的
嘗試將其轉換為HTMLButtonElement並單擊如下所示
HTMLButtonElement btnele = (HTMLButtonElement)ele.DomElement;
btnele.click();
為此,您需要添加Microsoft.mshtml參考。 我使用下面的幫助程序類,可能會進一步幫助您
public static class HtmlElementHelper
{
public static string Val(this WebBrowser wb, string id, string Val = null)
{
HtmlElement ele = wb.Document.GetElementById(id);
if (ele.IsNotNull())
{
HTMLInputElement txtele = (HTMLInputElement)ele.DomElement;
if (Val.IsNull())
Val = txtele.value;
else
txtele.value = Val;
}
return Val;
}
public static void eleClick(this WebBrowser wb, string id)
{
HtmlElement ele = wb.Document.All[id];
if (ele.IsNotNull())
{
switch (ele.TagName.ToLower())
{
case "input":
HTMLButtonElement btnele = (HTMLButtonElement)ele.DomElement;
btnele.click();
break;
case "a":
HTMLAnchorElement ancele = (HTMLAnchorElement)ele.DomElement;
ancele.click();
break;
}
}
}
public static void eleClick(this WebBrowser wb, string tag, string data)
{
HtmlElementCollection eleCollection = wb.Document.GetElementsByTagName(tag);
foreach (HtmlElement ele in eleCollection)
{
if (ele.InnerHtml.ToCString().ToLower() == data)
{
switch (tag)
{
case "a":
HTMLAnchorElement ancele = (HTMLAnchorElement)ele.DomElement;
ancele.click();
break;
}
break;
}
}
}
public static string Html(this WebBrowser wb, string id, string val = null)
{
HtmlElement ele = wb.Document.GetElementById(id);
if (ele.IsNotNull())
{
switch (ele.TagName.ToLower())
{
case "span":
HTMLSpanElement spanEle = (HTMLSpanElement)ele.DomElement;
if (val.IsNull())
val = spanEle.innerHTML;
else
spanEle.innerHTML = val;
break;
case "div":
HTMLDivElement divEle = (HTMLDivElement)ele.DomElement;
if (val.IsNull())
val = divEle.innerHTML;
else
divEle.innerHTML = val;
break;
}
}
return val;
}
public static string Style(this WebBrowser wb, string id)
{
HtmlElement ele = wb.Document.All[id];
return ele.Style.ToCString();
}
public static string Attr(this WebBrowser wb, string id, string key, string val=null,bool isTag=false,string data =null)
{
if (!isTag)
{
HtmlElement ele = wb.Document.All[id];
if (val.IsNull())
val = ele.GetAttribute(key);
else
ele.SetAttribute(key, val);
}
else
{
HtmlElementCollection eleCollection = wb.Document.GetElementsByTagName(id);
foreach (HtmlElement ele in eleCollection)
{
if (ele.InnerHtml.ToCString().ToLower().Contains(data))
{
switch (id)
{
case "a":
if (val.IsNull())
val = ele.GetAttribute(key);
else
ele.SetAttribute(key, val);
break;
}
break;
}
}
}
return val;
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.