我通过webBrowser1这个控件,打开了某网站的注册界面然后通过webBrowser1.Document.GetElementById("username").InnerText = "aaaa";可以控制页面上用户名,密码框,还有下拉框。但是我发现有一个框是选择所在地的(省市级联的下拉框),代码如下:<th>现在所在地</th>
<td>
<script type="text/javascript" src="images/script_city.js"></script>
<script type="text/javascript">
<!--
showprovince('resideprovince', 'residecity', '');
showcity('residecity', '', 'resideprovince');
//-->
</script>
貌似是通过JS生成的级联下拉框,
我想问,有什么方法能获取到那两个下拉框的ID?
或者那个JS文件在本地能找到吗?在什么地方?JS文件里面会有哪两个下拉框的ID吗?
或者还有别的什么方法能在Form里控制这两个级联下拉框的值?求赐教~~~~~~~

解决方案 »

  1.   


    <th>现在所在地</th><td><script type="text/javascript" src="images/script_city.js"></script><script type="text/javascript"><!--showprovince('resideprovince', 'residecity', '');showcity('residecity', '', 'resideprovince');//--></script>
    这个就是源文件,早找过了
      

  2.   

    那引入的script_city.js文件里面肯定定义了函数showprovince、showcity。你查看一下这两个函数是不是造了html出来?
      

  3.   

    用 f12 打开开发者工具在 script_city.js 里应该能找到 showprovince,showcity 的源码
       
      

  4.   

    嗯,同意LS所说的,在images/script_city.js里面找到showprovince和showcity这两个方法的定义,从而找到两个下拉框的ID.
      

  5.   

    F12找到下拉列表框的ID 
    //selectAge 为下拉框的ID
                HtmlElement element = this.webBrowser.Document.All["下拉ID"];
                if (element != null) {                //下拉框元素个数
                    int count = element.Children.Count;
                    
                    //获取当前选择的元素索引
                    object o = element.GetAttribute("selectedIndex");
                    
                    //获取当前选择的元素的value及text
                    if (o != null && !string.IsNullOrEmpty(o.ToString()))
                    {
                        int selectIndex = Convert.ToInt32(o);
                        o = element.Children[selectIndex].GetAttribute("value");
                        o = element.Children[selectIndex].GetAttribute("text");
                    }                //遍历每个元素
                    foreach (HtmlElement item in element.Children)
                    {
                        System.Diagnostics.Debug.WriteLine(string.Format("value:{0},text:{1}", item.GetAttribute("value"), item.GetAttribute("text")));
                    }            }