使用Java ?,使用SeleniumRC檢測網頁上的元素以進行自動測試的最佳方法是什麼?我知道有XPath元素和CSS元素,但哪一個最好?在java中檢測seleniumRC網頁上元素的最佳方法
謝謝! Nitin
使用Java ?,使用SeleniumRC檢測網頁上的元素以進行自動測試的最佳方法是什麼?我知道有XPath元素和CSS元素,但哪一個最好?在java中檢測seleniumRC網頁上元素的最佳方法
謝謝! Nitin
在我看來,最準確的方式是XPath,因爲您可以使用XPath來描述DOM中某個元素的確切位置,但是有些情況下CSS定位器的工作效果要好於XPath。
使用硒的ID定位器是最簡單的,但除非你正在尋找的元素有一個ID不總是有用的。
使用XPath的最大不利之處是Selenium RC和帶有糟糕的JavaScript渲染引擎(Think IE6/IE7)的瀏覽器的性能。相當一部分工作是試圖糾正這一點,所以如果你使用格式良好的XPath只搜索DOM的特定部分,這個問題應該是最小的。 Selenium webdriver實現速度更快。
總結真的沒有人會回答它取決於你想要的定位器,以及你正在測試的瀏覽器。我個人在99%的實例中使用XPath。
我個人使用XPath幾乎只用偶爾的CSS定位器。
CSS選擇器速度更快但並非總是可用;您始終可以依賴XPath,但可能會影響性能。
Xpath是我用過的方式。如果你的節點有唯一的id,它將會有所幫助。
查找元素的最佳和最快的方法是通過id。在許多瀏覽器中,通過id查找元素的時間是線性的或者甚至是不變的。非常快。
例如,給定一個元素定義爲:
<input type="text" name="passwd" id="passwd-id" />
你會發現它是這樣的:
selenium.type("passwd-id", "test");
或者,如果你使用的API的webdriver:
element = driver.findElement(By.id("passwd-id"));
如果網頁上的元素沒有ID,請添加它們!或者要求開發者添加它們!
查找元素的下一個最佳方法是名稱。這很快,特別是如果該名稱在頁面上是唯一的。
例如:
selenium.type("passwd", "test");
或者,如果你使用的API的webdriver:
element = driver.findElement(By.name("passwd"));
找到一個元素是使用CSS選擇器的第三條道路。現代瀏覽器非常擅長以這種方式定位元素。
查找元素的最糟糕方法是使用xpath。 xpath很慢且很脆弱,很難閱讀。
西蒙·斯圖爾特的主要貢獻者硒,回答了這個問題在這裏: http://www.youtube.com/watch?v=oX-0Mt5zju0&feature=related 找時間戳39:00
還有良好的信息在這裏: http://seleniumhq.org/docs/02_selenium_ide.html#locating-elements
X-Paths確實是準確的。但是,它們也非常脆弱。任何改變移動網站的網站都有可能破壞你的測試。 ID是迄今爲止最脆弱的,因爲如果您對a的更改無關緊要,您的測試總能找到它。
沒有用例這個問題只會得到主觀答案。 – 2011-03-15 15:43:31