首页 / 网页编程 / ASP.NET / 漫话ID(下)——“自定义ID”以帮助定位自定义控件(实例和应用)
        
            漫话ID(下)——“自定义ID”以帮助定位自定义控件(实例和应用)2011-10-14 博客园 Aaron Wu在前面的两篇文章《漫话ID(上)——Name和ID的种种》 和《漫话ID(中)——UniqueID和ClientID》中,我们讨论了关于ID的一些内容。在这一篇中,我想讨论一下关于“自定义ID”的话题。这个所谓的“自定义ID”跟前面提到的name,ID,UniqueID,ClientID没多大关系,但是借用了id的特质——我们可以为控件添加一个自定义属性,暂时称之为testid,然后将id的值赋给testid。这可以应用于自定义控件较多的情形下的Web自动化测试之中,这样我们访问到的属性是一个有意义的可读的属性,而且不会因为自定义控件中的子控件的位置改变而导致生成的UniqueID改变造成的测试脚本失效。自然,这个方法也有它很大的局限性,具体在后面会提到,先还是介绍一下我的方法。思路重写System.Web.UI.Adapters.ControlAdapter中的BeginRender方法,将控件的ID值直接拿出来赋给一个新的属性testid,并利用浏览器配置文件并将这个testid属性显示到最终的页面中。实现步骤步骤1:重写System.Web.UI.Adapters.ControlAdapter中的BeginRender方法,将控件的ID值赋给新属性testid。public class HtmlControlAdapter:System.Web.UI.Adapters.ControlAdapter
    {
        protected override void BeginRender(HtmlTextWriter writer)
        {
            writer.AddAttribute("testid", this.Control.ID);
            base.BeginRender(writer);
        }
    }步骤2:使用浏览器配置文件加入修改后的内容<!--可在 <windir>Microsoft.NETFramework<ver>CONFIGBrowsers 中找到现有的浏览器定义-->
<browsers>
        <browser refID="Default">
                <controlAdapters>                      
                        <adapter controlType="System.Web.UI.WebControls.TextBox"
                                         adapterType="TestIDWebProject.HtmlControlAdapter" />                 
                        <adapter controlType="System.Web.UI.WebControls.Button"
                                          adapterType="TestIDWebProject.HtmlControlAdapter" />         
                </controlAdapters>
        </browser>
</browsers>在配置文件中我们将testid属性应用到了TextBox和Button两种控件上。