2012-09-14 41 views
1

此刻我有這樣的:檢查一個html元素是否屬於ruby和watir?

def burnChart() 
    @browser.div(:id => "container").div(:id => "header").img(:class => "cogMenuHover").click 
    @browser.div(:id => "container").div(:id => "header").div(:class => "sbTopMenu").li(:class => "taskMenuOp", :index =>1).click 

    if 
    assert(@browser.send(type.to_sym, :class, "highcharts-grid").exists?) 
    puts 'Chart has been found!' 
    else 
    puts 'No chart was generated' 
    end 
end 

原本我以爲我不得不使用to_css?但從我看到其他人使用它,這是不正確的,我不確定。

誰能幫助我,我只是想檢查,如果一個類存在,並返回一個true或FASLE記錄錯誤或確認

+2

也許我在這裏錯過了一些東西,有沒有一個原因,你不只是做一個常規的@ browser.element(:how =>:what).present? – anonygoose

回答

2

我相信你想:

def burnChart() 
    @browser.div(:id => "container").div(:id => "header").img(:class => "cogMenuHover").click 
    @browser.div(:id => "container").div(:id => "header").div(:class => "sbTopMenu").li(:class => "taskMenuOp", :index =>1).click 

    #Due to using IE, it looks like .exists? has to be used. 
    if @browser.element(:class, "highcharts-grid").exists? 
    puts 'Chart has been found!' 
    else 
    puts 'No chart was generated' 
    end 
end 

注意:

  • 對元素的檢查應該是if語句的條件。
  • 更改支票爲.present?。只要元素在頁面上,.exists?就會返回true,但通常您還要檢查它是否可見。
  • 切換到@browser.element而不是@browser.send。你可以做你正在做的事情,但你沒有在任何地方定義type,所以似乎沒有必要。
+0

似乎幾乎工作,我不再在控制檯中發生錯誤,但它記錄沒有找到圖表,即使它肯定存在?我不知道這是一個svg生成圖表的問題,它使用的標記是,這可能是問題嗎? – samayres1992

+0

我嘗試了一個帶有該標記的頁面,它似乎如果您通過irb手動運行.present?行,它是否適用於圖表? –

+0

它返回false,有多奇怪。 @ browser.element(:class,「highcharts -grid「)。present? => false – samayres1992

相關問題