Welcome 微信登录

首页 / 网页编程 / 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两种控件上。