很简单,你就快到了,你可以把这个 sn-p 放到 DocumentCompleted 处理程序中
注意:您不能使用 GetElementsByName 来触发您的提交按钮,因为它没有 name 属性或 Id 属性
var radioClick = webBrowser1.Document.GetElementsByTagName("input").GetElementsByName("chosen").OfType<HtmlElement>()
.Where(x => x.Id == "a2").FirstOrDefault()
.InvokeMember("Click");
var buttonClick = webBrowser1.Document.GetElementsByTagName("input").OfType<HtmlElement>()
.Where(html => html.GetAttribute("type").Equals("submit") && html.GetAttribute("value").Equals("Next")).FirstOrDefault()
.InvokeMember("Click");
我正在尝试让我的 webbrowser1 单击/选择一个单选按钮并作为
以及单击没有任何 id 或名称的提交按钮。
但是你的 HTML 似乎有一个 Id 和 Name,除了 Button,不过我们可以使用元素的 GetAttribute("value")
var radioBoxValue = "1";
var submitButtonValue = "Next";
//Click Radio Box
var findRadioBox = webBrowser1.Document.GetElementsByTagName("input").OfType<HtmlElement>()
.Where(html => html.GetAttribute("type").Equals("radio") && html.GetAttribute("value").Equals(radioBoxValue)).FirstOrDefault();
findRadioBox.InvokeMember("Click");
//Click Button
var findsubmitButton = webBrowser1.Document.GetElementsByTagName("input").OfType<HtmlElement>()
.Where(html => html.GetAttribute("type").Equals("submit") && html.GetAttribute("value").Equals(submitButtonValue)).FirstOrDefault();
findsubmitButton.InvokeMember("Click");
//Unsubscribing from the document completed event, there are times when you will run into situations where documentcompelted will fire multiple times
webBrowser1.DocumentCompleted -= webBrowser1_DocumentCompleted;
完整片段
private async void button1_Click(object sender, EventArgs e)
{
string url = @"https://localhost:5001/Home/Index";
webBrowser1.AllowNavigation = true;
webBrowser1.Navigate(url);
this.webBrowser1.DocumentCompleted += webBrowser1_DocumentCompleted;
}
private async void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
{
var radioBoxValue = "1";
var submitButtonValue = "Next";
//Click Radio Box
var findRadioBox = webBrowser1.Document.GetElementsByTagName("input").OfType<HtmlElement>()
.Where(html => html.GetAttribute("type").Equals("radio") && html.GetAttribute("value").Equals(radioBoxValue)).FirstOrDefault();
findRadioBox.InvokeMember("Click");
//Click Button
var findsubmitButton = webBrowser1.Document.GetElementsByTagName("input").OfType<HtmlElement>()
.Where(html => html.GetAttribute("type").Equals("submit") && html.GetAttribute("value").Equals(submitButtonValue)).FirstOrDefault();
findsubmitButton.InvokeMember("Click");
//Unsubscribing from the document completed event, there are times when you will run into situations where documentcompelted will fire multiple times
webBrowser1.DocumentCompleted -= webBrowser1_DocumentCompleted;
}