2011-06-07 38 views
0

我在編寫硒腳本時需要選擇定位符的幫助...Selenium中的定位器首選項RC

使用XPath,CSS和標識符有什麼區別? 是XPath優先於其他人嗎?如果是這樣,爲什麼?

回答

1

CSS將成爲我在執行速度和可讀性/可維護性方面的選擇。此外,CSS定位器可能會在迭代環境中見證最少的變化(與更改鏈接名稱,標題等相反)。使用CSS的唯一缺點是缺少IDE內部支持來制定它們。

Here是一個偉大的職位闡明爲什麼CSS是選擇:)

+0

「唯一的缺點使用CSS是缺乏在IDE內部爲內部支持提供支持。「 - 我認爲Selenium IDE 1.11支持CSS :)。開心測試 – 2011-06-07 13:27:06

+0

謝謝。顯然我需要升級;) – rs79 2011-06-07 13:32:53

+1

TBH我不會使用IDE來創建定位器,但它們通常都很糟糕......我通常使用幫助器方法在Java中創建一個框架,並使用像螢火蟲這樣的工具手動編寫所有選擇器或谷歌瀏覽器webtools – Tnem 2011-06-07 13:34:55

1

Xpath一般很慢,特別是在IE中。所有瀏覽器都不支持CSS選擇器,尤其是IE瀏覽器(看到這裏的趨勢?)。通常使用名稱或ID選擇器,因爲這些名稱或ID選擇器速度較快,並且使用xpath選擇器進行備份,但不能。編寫好的xpath選擇器是一種技巧,如果你注意到它會導致你的測試開始放慢速度,你可能會返回並優化選擇器。

3

的順序,你應該嘗試挑定位器是按以下順序

  1. ID
  2. 名稱
  3. CSS的定位
  4. XPATH

ID和Name將有助於創建良好的可維護測試,因爲可以在不中斷測試的情況下更改元素的類型。例如,如果你點擊了一個<input type=button id='foo'>並得到了改變,以<div id='foo'>Bar</div>那麼你的測試將仍然工作,只要接下來發生的事情仍然是相同的順序

0

而其他三個答案thusfar所有提供方面的重要信息你的問題,還有一個資源,你可能會發現有幫助。我最近編寫了一本食譜和比較圖表,內容涵蓋了Selenium支持的所有定位技術:這個快速參考字面上可以讓你看到「...使用XPath,CSS,標識符之間的差異」等等。請參閱Simple-Talk.com上的XPath, CSS, DOM and Selenium: The Rosetta Stone

0

嗨剛剛添加更多, 1)。 ID或NAME是瀏覽器原生的,所有其他CSS,XPATH,Javascript對瀏覽器來說都是外來的(也就是說,他們必須依賴各自的引擎)。所以本土永遠是第一選擇。 2)。你不能使用CSS或XPATH的所有功能(即:不同版本的CSS或XPATH的瀏覽器支持問題)。 3)。 XPATH在IE7上存在問題。 (所以我只寫了每個元素的位置路徑) 4)。 IE7無法找到非常基本的CSS路徑有時(css = table.nav td.name),所以我不得不將其改爲javascript編碼(dom = document.findElementsByTagName('td')[0])

0

訂單選擇定位器應該是:

  1. Id:如果Web應用程序遵循W3C準則,您將只能獲得頁面上的單個元素。因此,搜索元素的速度將是最高的。
  2. 名稱
  3. 鏈接文本
  4. 部分鏈接文本
  5. 標籤名稱
  6. 類名
  7. CSS選擇器
  8. Xpath的