2015-01-14 34 views
0

我經常使用:xpath屬性來爲我的自動化腳本使用Watir標識一個元素,並發現它真的很棒。它是最少改變的屬性,所以更少的工作來維護自動化腳本..當然,那些無法通過其他方式很容易識別的元素:id,:name,:value attributes ..使用「:xpath」屬性來識別使用Watir的對象有什麼缺點?

我有點擔心要採取一些專家建議在構建如此多的自動化腳本之前使用:xpath。

  1. 使用xpath識別使用Watir的對象的缺點是什麼?
  2. 待辦事項:xpath元素的值將在IE,Chrome和FF相同的時

是否還有其他重要的我應該知道如何使用:XPath的?

謝謝

+0

有趣的是,我認爲使用':xpath'作爲定位符(而不是':id')會更慢。但我從來沒有做過基準測試。知道是否存在顯着差異會很有趣。 – orde

回答

0

xpath應該在所有瀏覽器中都一樣。

使用xpath的問題在於它是最容易破壞的定位器,因爲元素的定位器在xpath變化中不依賴於其他任何東西。例如如果您正在使用xpath在頁面上查找結果表,並且稍後將另一個表添加到表的上方,那麼在更新xpath之前,xpath將被破壞,並且測試將失敗。如果該表使用的是一個id,那麼添加第二個表就不會破壞任何東西,因爲新的表有不同的id。

如果您正在處理的網頁沒有ID,並且它不是添加某個/請求添加某個選項的選項,請記住在watir中您可以使用多個定位器。

例如@ browser.table(class:'results_table',text:/ Original results table /)

這是一個愚蠢的例子,但希望它能說明這一點。如果有些情況下使用多個定位器仍然不能出於任何原因,那麼我會考慮使用css選擇器而不是xpath,因爲您應該能夠實現相同的功能,但它不會太脆弱。

在小測試套件中,測試中斷的頻率並不是太重要,尤其是如果您是唯一一個在測試中工作的人。但是,從現在開始幾年後,當您有數百個測試需要維護時,以及兩到三個人共享代碼庫時,您最終可能花費更長的時間來修復您花在編寫新測試上的舊測試。值得做的事情是儘量減少這種情況,因爲稍後進行重寫將會花費更長的時間。

希望這有助於一些!

相關問題