程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> ASP.NET >> 關於ASP.NET >> 漫話ID(上)——Name和ID的種種

漫話ID(上)——Name和ID的種種

編輯:關於ASP.NET

頁面元素中的ID這東西想必很多人都用過,在JavaScript函數中也經常要用到 document.getElementById()這個方法來定位一個元素並操作它。在Web自動化測試中,我們也經常用到元 素的id來定位元素,這樣看起來id是個好玩意兒。

在之前的一篇文章Selenium IDE實踐中,Selenium錄制的腳本中有下面這一段代碼:

[Test]
        public void TheNewTest()
        {
            selenium.Open("http://www.google.cn/");
            Assert.AreEqual("Google", selenium.GetTitle());
            selenium.Type("q", "Selenium 介紹");
            selenium.Click("btnG");
            selenium.WaitForPageToLoad("30000");
            Assert.AreEqual("Selenium 介紹 - Google 搜索",  selenium.GetTitle());
            try
            {
                Assert.IsTrue(selenium.IsTextPresent("圖片、新聞搜索"));
            }
            catch (AssertionException e)
            {
                verificationErrors.Append(e.Message);
            }
        }

注意Aaron做了標記的那兩行的兩個方法,Selenium.Type()方法顧名思義是向某個控件輸入內容的 ,看著Aaron的例子應該會明白第二個參數是輸入的內容,那麼第一個參數想必是控件的屬性了。對,第 一個控件是google搜索頁面那個我們經常使用的輸入框,如果我們用IE Developer Toolbar來查看該文本 輸入框,可以看到下面的內容:

<input title="Google 搜索" maxLength="2048" size="55" name="q" autocomplete="off"/>

同樣我們Selenium.Click的btnG則是Google頁面上那個“Google Search”按鈕的name

<input title="Google Search" maxLength="2048" size="55" name="q" autocomplete="off"/>

這裡面google使用的是元素的name屬性,對應於document.getElementsByName()方法,也是定位元素 的一種方法。下面問題來了,Name與ID有什麼關系呢?

話說表單的name與id其實是同一個意思,都是為了標記對象名稱。它們所不同的是:name是Netscape 的、id是Microsoft的,這種說法到底准不准確我們暫且不論,我們更關心的是怎麼用好這兩個東西。

有總結如下:

Name用作表單(form)的控件名,提交的數據都用控件的name而不是id來控制。因為有許多name會同 時對應多個控件,比如checkbox和radio,而id必須是全文檔中唯一的。此外浏覽器會根據name來設定發 送到服務器的request。如果用id,服務器無法得到數據的。Name還可以用於在其他frame或window指定 target。對於name來講,它有很多用途,不能完全由ID來代替。關於name的用途相關內容建議參看文末引 用1原帖及帖下的熱烈討論。

ID:根據HTML 4.0 的定義,除 BASE, HEAD, HTML, META, SCRIPT, STYLE, TITLE 標簽外,id 都可用, 包括了Body li a table tr td th p div span pre dl dt dd font b等.另外asp.net進程在處理aspx頁 面時不允許有ID非唯一,這時頁面會拋出異常。

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