2011-03-19 50 views
0
頁面

上存在元素我是很新的的Watir。無法找到檢測方法,如果

我有一點是應該檢測是否元素存在,如果是這樣,單擊它,如果沒有,點擊不同元素的Ruby /的Watir代碼。每一個元素都顯示出來。不幸的是我沒有嘗試過。

if browser.contains_text("/media/images/icons/reviewertools/editreview.jpg") 
then browser.image(:src => "/media/images/icons/reviewertools/editreview.jpg").click 
else browser.image(:src => "/media/images/icons/reviewertools/savereview.jpg").click 
end 

這最終失敗, 「無法定位元件,使用{:SRC =>」/媒體/圖像/圖標/ reviewertools/savereview.jpg 「}(的Watir ::異常:: UnknownObjectException)」

它應該點擊/editreview.jpg,這是可見的。

我也曾嘗試:

if browser.image("/media/images/icons/reviewertools/savereview.jpg").exists 
then browser.image(:src => "/media/images/icons/reviewertools/savereview.jpg").click 

還有:

if browser.image("/media/images/icons/reviewertools/savereview.jpg").exists? 

注意,這些案件無檢測的元素,或者未能做到這一點,執行else子句。

請,如果您迴應,您的建議提供具體的代碼示例。

+2

可能重複(http://stackoverflow.com/questions/5358518/how-to-detect-if-an-element-exists-in-watir ) – 2011-03-19 08:55:25

+0

請提供相關的HTML – 2011-03-21 10:59:54

+0

對於你試過的東西,但沒有奏效,發生了什麼?你是否收到錯誤信息,如果有的話,它是什麼?當你提出問題時,它有助於提供具體的信息,而不僅僅是'沒有工作'它不工作通常是有價值的信息, – 2011-03-22 19:25:14

回答

2
  1. 只有方法 「的存在嗎?」和「存在?」。所以「存在」是行不通的。請諮詢here
  2. 你可以嘗試找出不同元素的存在,比如一個鏈接。對你起作用嗎?不應該有例外。在這種情況下,Watir需要返回False。
1

我建議檢查DOM以檢查您的圖像是否符合您的要求。在IE8中按F12,或使用與您的瀏覽器相關的任何工具。您可以嘗試使用IRB連接到瀏覽器並嘗試查找圖像。

如果失敗那麼我會嘗試查找圖像的另一種方式。如果圖像處於某種形式,這可能會導致問題,您必須在圖像前查找表單。

或嘗試另一種方式找到它,只是爲了確保它是可能的。

browser.image(:index => 3).click 
browser.image(:id => 'an_image').click 
browser.div(:id => 'image_container').image(:index => 2).click 

您可以使用this link,看看有什麼辦法可以識別圖像,不要忘記,你可以同時使用不止一個標識符,如。 (:class =>/regexofaclass /,:index => 2)

您的代碼沒有問題,因爲它(除了「exists」的末尾?和最後一行不包含你在找什麼)。

1

。假定這個東西真的是定義由它的HTML標籤中的「形象」,你試圖確定對象是否有因爲

  1. 沒有使用正確的方法,在Ruby中失敗,在一個問號
  2. 它不是文本返回一個布爾年底方法,

,並只提供的其它嘗試的「是什麼」,而不是如何,仍然使用了錯誤的方法。

試試這個

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

否則必須在HTML好好看看,你實際上是在尋找一個「按鈕」吧?

2

您需要對click和exists使用相同的語法嗎?方法。 Kat和Chuck以及Kinofrost也指出了這一點。

if browser.image(:src => "/media/images/icons/reviewertools/editreview.jpg").exists? 
then browser.image(:src => "/media/images/icons/reviewertools/editreview.jpg").click 
else browser.image(:src => "/media/images/icons/reviewertools/savereview.jpg").click 
end 
的[如何檢測是否在存在的Watir的元素]