程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> ASP.NET >> 關於ASP.NET >> 漫話ID(下)——“自定義ID”以幫助定位自定義控件(實例和應用)

漫話ID(下)——“自定義ID”以幫助定位自定義控件(實例和應用)

編輯:關於ASP.NET

在前面的兩篇文章《漫話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.NET\Framework\<ver>\CONFIG\Browsers 中找到現有的浏覽器定義

-->

<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兩種控件上。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved