界面是 Frame  的 ,左边是  菜单  菜单是用 由JS动态生成的
<li class="focus" id="1000011" onclick="clickThirdMenu(false, '1000011', '0000738', '测试', '/pages/bsd/repaircard/aadg.jsf?authKey=47yh%2BwMmFMxgLy8sWheaTP1wYz0hM%3D', this, null);"><span style="cursor:hand" class="text">测试</span></li>这是其中的一项我写的 单击 这个选项的代码
   HtmlElement btnSubmit = webBrowser1.Document.Window.Frames["frameNav"].Document.All["1000011"];
   if (btnSubmit!= null)
     btnSubmit.InvokeMember("click"); 执行报错  说 属性 clickThirdMenu 的值为null 、未定义或不是Function 对象代码 0请高手指教webbrowserC#html采集浏览器

解决方案 »

  1.   

    摆渡http://hi.baidu.com/superfeng/item/2d8a6f154b7dd0f8ddeeca21http://www.cnblogs.com/peterzb/archive/2009/07/12/1521787.htmlhttp://www.cnblogs.com/txw1958/archive/2012/09/24/CSharp-WebBrowser.html
      

  2.   

    <script language="javascript"><!--<!--var url = "/";// 页面跳转
    (function() {
        var accessUrl = url + 'pages/sys/frame/iframe-access';
        var resError = function(retMsg, retCode) {
            retMsg = retMsg || '';
            retCode = retCode || '';
            window.location.replace(accessUrl + '?retMsg=' + encodeURIComponent(retMsg)
                    + '&retCode=' + encodeURIComponent(retCode));
        };
    try {
        var iframeAccessUrl = '';
        if (iframeAccessUrl) { // 如果是iframe集成ESS页面透明登录后跳转
            if ('empty' == iframeAccessUrl) {
                resError('跳转地址为空');
                return;
            }
            if (!window.parent || window.parent.length == 0) {
                resError('没有嵌套页面');
                return;
            }
            window.location.replace(iframeAccessUrl);
            return;
        }
        // 该页面不能被嵌套
        if (window.parent && window.parent.length != 0) {
            window.parent.location.href = url;
            return;
        }
        // 不跳转
    } catch (e) {
        resError('js出错');
    }
    })();function selectedLayItem(fct,laytype){
        if(fct && fct.nodeType){
            var lis=fct.getElementsByTagName("li");
            if(lis && lis.length){
                var li,link;
                for(var i=0;i<lis.length;i++){
                    li=lis[i];
                    if(typeof(li)!="undefined" && li.nodeType
                       && typeof(li.tagName)!="undefined"){
                        li.className="";
                        if(li.childNodes.length){
                            link=li.childNodes[0];
                            if(laytype==link.getAttribute("laytype")){
                                li.className="on";
                            }
                        }
                    }
                }
            }
        }
    }function selectedLayout(laytype) {
        if(!laytype) return false;    var frameTop=document.getElementById("frameTop");
        var frameFct=document.getElementById("frameFct");
        var fct=null;
        if(frameTop && frameTop.contentWindow.document){
            fct=frameTop.contentWindow.document.getElementById("fct");
            selectedLayItem(fct,laytype);
        }
        fct=null;
        if(frameFct && frameFct.contentWindow.document){
            fct=frameFct.contentWindow.document.getElementById("fct");
            selectedLayItem(fct,laytype);   
        }
        
        var frame = document.getElementById("frame");
        var frameWindow = document.getElementById("frameWindow");
        if (laytype == "1") {
            frame.rows = "79,60,*,20";
            frameWindow.cols = "190,6,*";
        } else if (laytype == "2") {
            frame.rows = "0,60,*,20";
            frameWindow.cols = "190,6,*"; 
        } else if (laytype == "3") {
            frame.rows = "79,60,*,20";
            frameWindow.cols = "0,6,*";
        } else if (laytype == "4") {
            frame.rows = "0,60,*,20";
            frameWindow.cols = "0,0,*";
        }
    }
    -->//--></script>
    这个JS 因该是在左边的导航页面里的
      

  3.   

    我说的可是  在Frame  框架里面的哦,,,并且 菜单是由Js 生成的,不是静态的
      

  4.   

    <TD vAlign=top width=40 align=center><BR><BR><BR><BR><BUTTON 
          style="FONT-SIZE: 9pt" onclick="pushBtm('YU')">年↑</BUTTON><BR><BUTTON 
          style="FONT-SIZE: 9pt" onclick="pushBtm('YD')">年↓</BUTTON> 
          <P><BUTTON style="FONT-SIZE: 9pt" 
          onclick="pushBtm('MU')">月↑</BUTTON><BR><BUTTON style="FONT-SIZE: 9pt" 
          onclick="pushBtm('MD')">月↓</BUTTON> 
          <P><BUTTON style="FONT-SIZE: 9pt" onclick="pushBtm('')">今日</BUTTON> 
      </P></TD>
            private void 定时_Tick(object sender, EventArgs e)
            {
                HtmlElement resultElement = null;
                    foreach (HtmlElement currentElement in 网页浏览.Document.All)
                    {
                        if (currentElement.GetAttribute("value").Contains("年↑"))
                        {
                            resultElement = currentElement;
                            break;
                        }
                    }
                if (resultElement != null)
                    resultElement.InvokeMember("click");
            }
    VS2010 C# 测试通过
      

  5.   

    像这种写法根本就没办法:<SELECT style="FONT-SIZE: 9pt" 
                onchange=changeCld() name=SY> 
                  <SCRIPT language=JavaScript><!--
                for(i=1900;i<2050;i++) document.write('<option>'+i)
                //--></SCRIPT>
                </SELECT>
    所幸是本地文件,可以修改为:<SELECT style="FONT-SIZE: 9pt" 
                onchange=changeCld() name=SY> 
                  <SCRIPT language=JavaScript><!--
                for(i=1900;i<2050;i++) document.write('<option value='+i+'>'+i)
                //--></SCRIPT>
                </SELECT>
    修改后可以赋值:HtmlElement name控件 = 网页浏览.Document.All["SY"];
                    string name控件值 = name控件.OuterText;
                    if (name控件值 != "1965")
                        name控件.SetAttribute("value", "1965");