2011-03-18 75 views
7

我對Watir比較新,但沒有找到關於如何檢查元素是否存在的良好文檔(示例)。當然有API規範,但是如果我沒有找到一個例子,這些規範對我來說是非常有意義的。如何檢測Watir中是否存在元素

我都試過組合,但似乎沒有任何工作... 如果browser.image(:SRC「/media/images/icons/reviewertools/editreview.jpg").exists 然後... 如果browser.image(:src「/media/images/icons/reviewertools/editreview.jpg").exists? 然後...

如果任何人有具體的建議,如何實現這一點,請幫助!謝謝!

+0

請提供圖片的HTML – 2011-03-21 11:03:51

+0

請提供HTML沒有它,我們只能猜測你在做什麼錯誤,對於我們所知道的這件事不是,但可能是一個 2011-03-22 19:36:16

+0

可能的重複http://stackoverflow.com/questions/5359556/unable-to-find-method-for-detecting-if-element-exists-on-a-page/5396645#5396645 – 2011-03-22 19:41:58

回答

2

好像你正在使用它。這是一箇舊的RDoc of Watir

難道不行嗎,因爲Watir找不到它?很難說,因爲沒有源或鏈接到正在測試的頁面。我認爲我只使用image.exists?。一般而言,當圖像存在但未找到時出現的錯誤是:

  1. 如何與元素類型不兼容。有一個備忘單可以幫助您查看哪些對象類型可以使用不同的屬性here
  2. 什麼是不正確的。你可能需要玩一點。考慮嘗試使用正則表達式來匹配它,例如browser.image(:src,/editreview.jpg/)。作爲最後的手段,也許使用element_by_xpath,但是有維護成本。
  3. 位置不正確。也許元素是在一個框架或類似的東西。 browser.frame(「detail」)。image(:src,/editreview.jpg/)。

試試這些,但請讓我知道什麼工作。還有一件事,你在檢查什麼?如果它是測試標準的一部分,您可以這樣處理。如果你需要點擊它,那麼忘記.exists?並點擊它。如果Ruby不存在,Ruby會通知你。如果你需要它是恩典,請了解begin/rescue

祝你好運,

戴夫

+0

謝謝你們的答案。戴夫,請你指定一個例子,說明我應該如何使用image.exists?我使用的代碼是: 如果browser.image(:src「/media/images/icons/reviewertools/editreview.jpg」) 。存在? 不工作並返回: Adm in_Panel2.rb:45:syntax error,unexpected')',expected kEND ... reviewertools/editreview.jpg「)。exists? ^ Admin_Panel2.rb:48:語法錯誤,意想不到的kELSE,期待DMOZ目錄 Admin_Panel2.rb:212:語法錯誤,DMOZ目錄,$期待結束 很抱歉,但我沒有一個具體的例子丟失。謝謝。 – Rijksband 2011-03-19 01:48:33

+0

@rijksband語法錯誤意味着ruby解釋器解析代碼時出現問題。這可能意味着缺少/額外的括號或逗號或許多其他原因。在這種情況下,它最有可能是src和圖像路徑之間缺失的逗號。您可能想考慮使用更強大的編輯器,因爲它們中的很多會在寫入時指出錯誤。 – juan2raid 2011-03-19 16:57:50

2

您發佈的代碼應該只是罰款。 編輯:糟糕,錯誤。正如Katmoon指出的那樣,缺少一個逗號。你可能會陷入了

browser.image(:src "/media/images/icons/reviewertools/editreview.jpg").exists? 

的一個問題是,如果你指定的瀏覽器變量實際上是不存在的元素。

例如

b = Watir::IE.start(ipAddress) 
b.frame(:name, "doesntExist).image(:src "/media/images/icons/reviewertools/editreview.jpg").exists? 

上面的代碼會拋出Watir :: UnknownFrameException。您可以通過首先驗證幀是否存在或通過在開始/救援塊中包圍代碼來解決此問題。

+0

這仍然假設事情真的是一個圖像..如果它是一個按鈕或鏈接呢?沒有他提供HTML我們只能猜測。 – 2011-03-22 19:37:41

15

看來你缺少參數之間的逗號。

應該

if browser.image(:src, "/media/images/icons/reviewertools/editreview.jpg").exists? 

您也可以找到在未來this page有用知道是什麼屬性的支持。