我要做一个功能,按下按钮一个显示DIV接着输入文字框在按下按钮B
以下是我的程式流程按下按钮时呼叫的webbrowser连结设为一个网页然后,
做InvokeMember(点击)的动作,
然后网页端会将原本隐藏的DIV做显示动作,
然后当DIV显示时会在做一次InvokeMember(点击进入)的动作但是却在div还没显示时,他就已经输入文字框和按下按钮了
我试着使用Thread.Sleep(20 *1000),但也无法解决註:如果把以上动作拆成三个,每一个动作用一个按钮来呼叫是可以执行的
(EX:
1,按下按钮时呼叫的webbrowser连结到一个网页
2,做的动作InvokeMember(点击进入)
3.DIV显示时会在做一次InvokeMember(点击进入)的动作)
请各位大大帮忙

解决方案 »

  1.   

    像这种问题,一般都使用回调来解决
    好在.Net早已经封装好了,你在构造函数中注册事件处理
    webbrowser1.DocumentCompleted += (obj, e) =>
    {
        if(e.Url.Equal(加载Div时的Url))
        {
            3.DIV显示时会在做一次InvokeMember(点击进入)的动作)
        }
    };
      

  2.   

    浮云也疯狂: 我照着你的方法写但他似乎没进去回调
    問題二
      假如我的股息并没有另外产生新的呢URL?
      或者产称的网址码是乱数呢
     
            private void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
            {
                            ..................
                            ..................
                            ..................
                            hElemA.InvokeMember("Click");
                            Thread.Sleep(5 * 1000);
                            webBrowser1.DocumentCompleted += (obj,ee) =>
                                {
    if(e.Url.Equals("http://localhost:59551/WebCrackCaptcha/index.aspx"))
    }
      

  3.   

    Thread.Sleep(5 * 1000); 用了回调这个就多余了
    重点是
    webBrowser1.DocumentCompleted += (obj,ee) =>
                                 {
     if(e.Url.Equals("http://localhost:59551/WebCrackCaptcha/index.aspx"))
    {
        hElemA.InvokeMember("Click");
    }
    这两个e要一样,并且,最好把它放在Form的构造函数中,不要放在webBrowser1_DocumentCompleted,事件会多次处理,唉
      

  4.   

    浮云也疯狂: 
    谢谢,又学到一招,不过还是没解决,
    我在全新的测试网站,他有输入讯息但是还是没显示DIV我在已经完成的对像网站,他没有输入讯息,也没显示DIV顺到一问,如果我按下的按钮时,他产生DIV时并没有产生新网址(URL)呢?
    或者网址(URL)产生的编号是乱数呢??那该如何比较?
      

  5.   

    webBrowser1_DocumentCompleted是html加载完成时解发的
    所以,除了要判断url是你要处理的页面,还要用Js判断一下Document中那个div是否显示了
    js 大致是
    var div = webBrowser1.Document.GetElementById("mydiv");
    if(div.GetAttribute("readyState") == "complete" || div.GetAttribute("complete") == "true")
    {
       hElemA.InvokeMember("Click");
    }
      

  6.   

    浮云也疯狂: 
    結果還是一樣
    我的DIV裡面的GetAttribute("readyState")=complete
    但是 div.GetAttribute("complete") 是空字串
    甚至我還加了GetAttribute("display").Contains("")
    結果還是一樣