如何在浏览器上运行每个方法

本文关键字:方法 运行 浏览器 | 更新日期: 2023-09-27 18:09:31

        private void button2_Click(object sender, EventArgs e)
        {
         webBrowser1.Document.GetElementById("login_login_button").InvokeMember("Click"); 
//something that wait about 1 or 2 second before execute next line?               
         webBrowser1.Document.GetElementById("nav_settings_link").InvokeMember("Click"); 
         webBrowser1.Document.GetElementById("language_change2").InvokeMember("Click");                                   
        }

从这个代码,我尝试了Thread.Sleep();Task Delay();,但它显示了nullException…(我想是因为他们正在运行,而网页没有完全加载)有人能帮我吗?

现在,我已经弄清楚了我想要的方法是async方法,当它们还在运行时减慢时间

    private async void button2_Click(object sender, EventArgs e)
        {             webBrowser1.Document.GetElementById("login_login_button").InvokeMember("Click");await Task.Delay(1000);                      webBrowser1.Document.GetElementById("nav_settings_link").InvokeMember("Click"); 
await Task.Delay(1000);        webBrowser1.Document.GetElementById("language_change2").InvokeMember("Click");  }

如何在浏览器上运行每个方法

举个例子:

using System.Diagnostics;    

Stopwatch sw = new Stopwatch();
int timeout = 60; // 60 seconds
sw.Start(); // Use Restart for the next element, to reset the time to 0 first.
var element = webBrowser1.Document.GetElementById("login_login_button");
while(element == null && sw.Elapsed.TotalSeconds < timeout)
{
    Thread.Sleep(2000);
    element = webBrowser1.Document.GetElementById("login_login_button");
}
sw.Stop();
if(element!=null)
{
    element.InvokeMember("Click"); 
}
...
// if success, repeat with similar pattern for the next element
// if you still can't find the element, you'd better quit what you are trying to do

解释:

  1. 系统。启用秒表
  2. 的诊断
  3. 超时添加,这样您就不会永远等待
  4. 将元素存储到变量
  5. 每2秒检查一次元素
  6. 如果找到,点击并继续下一个
  7. 如果不是……你可能想退出你正在做的事情