如何单击网络浏览器中的特定按钮
How to Click on specific button in web browser
我的网页中大约有 10 个按钮具有几乎相同的 HTML 输入 class,但我想对特定按钮执行虚拟点击。
我该怎么做?
以下是其中一些:
<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;
}
编辑:
这不是我的网站,我无法更改此网站上的任何内容。
感谢帮助
您在构建页面时是否尝试过为每个按钮添加一些独特的 "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");
}
为每个标签添加id并根据按钮id调用点击事件,而不是根据class。
你应该使用价值。试试这个:
HtmlElementCollection classButton = webBrowser1.Document.GetElementsByTagName("input");
foreach (HtmlElement element in classButton)
{
var value = element.GetAttribute("value");
if (value.Trim().ToLower().Equals("ذخيره يا چاپ"))
{
element.InvokeMember("click");
}
}
我的网页中大约有 10 个按钮具有几乎相同的 HTML 输入 class,但我想对特定按钮执行虚拟点击。
我该怎么做?
以下是其中一些:
<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;
}
编辑:
这不是我的网站,我无法更改此网站上的任何内容。
感谢帮助
您在构建页面时是否尝试过为每个按钮添加一些独特的 "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");
}
为每个标签添加id并根据按钮id调用点击事件,而不是根据class。
你应该使用价值。试试这个:
HtmlElementCollection classButton = webBrowser1.Document.GetElementsByTagName("input");
foreach (HtmlElement element in classButton)
{
var value = element.GetAttribute("value");
if (value.Trim().ToLower().Equals("ذخيره يا چاپ"))
{
element.InvokeMember("click");
}
}