我的网页上有大约10个按钮,几乎相同的HTML输入类,但我想在特定按钮上执行虚拟点击。
我该怎么做?
以下是其中一些:
<input name="" value="ذخيره يا چاپ " onclick="saveOrPrint()" class="fieldbutton" type="button">
<input name="" value="ارسال " onclick="return sendEmail()" class="fieldbutton" type="button">
<input name="" tabindex="" value="نمایش رکوردهای انتخاب شده" onclick="displaySelectedRows()" disabled="disabled" class="fieldbutton" type="button">
我想点击第一个按钮。这段代码不起作用:
HtmlElementCollection classButton = webBrowser1.Document.All;
foreach (HtmlElement element in classButton)
{
if (element.GetAttribute("type") == "button" &&
element.GetAttribute("class") == "fieldbutton")
{
element.InvokeMember("click");
}
}
所有代码:
private void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
{
HtmlElement textElement = webBrowser1.Document.All.GetElementsByName("simpleSearch.value")[0];
textElement.SetAttribute("value", "9789643775070");
HtmlElement searchtype = webBrowser1.Document.All.GetElementsByName("simpleSearch.indexFieldId")[0];
searchtype.SetAttribute("value", "221091");
HtmlElement documenttype =
webBrowser1.Document.All.GetElementsByName("bibliographicLimitQueryBuilder.biblioDocType")[0];
documenttype.SetAttribute("value", "BF");
HtmlElement button =
webBrowser1.Document.GetElementsByTagName("input")
.Cast<HtmlElement>()
.FirstOrDefault(m => m.GetAttribute("type") == "submit");
button.InvokeMember("click");
HtmlElementCollection classButton = webBrowser1.Document.GetElementsByTagName("input");
foreach (HtmlElement element in classButton)
{
var value = element.GetAttribute("value");
if (value.Trim().ToLower().Equals("ذخيره يا چاپ"))
{
element.InvokeMember("click");
}
}
}
private void btn_LibraryManagement_NewCheckout_Click(object sender, EventArgs e)
{
webBrowser1.Navigate(@"http://opac.nlai.ir/opac-prod/search/searchBF.do");
webBrowser1.DocumentCompleted += webBrowser1_DocumentCompleted;
}
编辑:
这不是我的网站,我无法在此网站上进行任何更改。
帮助表示赞赏
答案 0 :(得分:1)
你应该使用价值。试试这个:
HtmlElementCollection classButton = webBrowser1.Document.GetElementsByTagName("input");
foreach (HtmlElement element in classButton)
{
var value = element.GetAttribute("value");
if (value.Trim().ToLower().Equals("ذخيره يا چاپ"))
{
element.InvokeMember("click");
}
}
答案 1 :(得分:0)
在构建页面时,您是否尝试为每个按钮添加一些唯一的“ID”(html属性)?之后,更容易识别出独特的行为。
像
<input id="print" name="" value="ذخيره يا چاپ " onclick="saveOrPrint()" class="fieldbutton" type="button">
<input id="emailing" name="" value="ارسال " onclick="return sendEmail()" class="fieldbutton" type="button">
<input id="selectedrows" name="" tabindex="" value="نمایش رکوردهای انتخاب شده" onclick="displaySelectedRows()" disabled="disabled" class="fieldbutton" type="button">
比你的foreach内部,例如:
if (element.GetAttribute("type") == "button" &&
element.GetAttribute("id") == "emailing")
{
element.InvokeMember("click");
}
答案 2 :(得分:0)
为每个标记添加id,并根据按钮ID调用click事件,而不是基于类。