我正在尝试使用我的C#应用程序中的webBrowser控件自动登录我的网站。网页检查填写和提交登录表单所需的时间。如果所花费的时间少于2秒,则会显示错误页面'说'机器人不被允许' 。
现在我的应用程序也正在获取错误页面'只是因为登录表单在2秒内被填满。如何在触发' InvokeMember("点击")' 之前添加延迟,以便网页计算填写表单的时间超过2秒。
这是我的代码
HtmlElement ele = WebBrowser1.Document.GetElementById("username");
if (ele != null)
{
ele.InnerText = "myUsrname";
}
ele = webBrowser1.Document.GetElementById("password");
if (ele != null)
{
ele.InnerText = "myPasswrd";
}
ele = webBrowser1.Document.GetElementById("submit");
if (ele != null)
{
// I want to add a delay of 3 seconds here
ele.InvokeMember("click");
}
注意:我使用" Task.Delay(3000);"但它似乎没有用。
编辑:这就是我现在正在使用的并且正在为我工作。
async void webBrowser1_DocumentCompleted_1(object sender, WebBrowserDocumentCompletedEventArgs e)
{
......//my code
await Task.Delay(3000);// this is where I wanted to put a delay
....
}
但我想,这是一种正确的使用方式吗?
答案 0 :(得分:0)
你可以用这个:
int milliseconds = 2000;
Thread.Sleep(milliseconds)
问候,
ST
答案 1 :(得分:0)
如果您想在等待时不冻结UI,请考虑以下示例:
private async void button1_Click(object sender, EventArgs e)
{
await Task.Run(async () =>
{
await Task.Delay(3000);
MessageBox.Show("1");
button1.Invoke(new Action(() => { this.button1.Text = "1"; }));
});
MessageBox.Show("2");
button1.Invoke(new Action(() => { this.button1.Text = "2"; }));
}
样本是自我描述的。