2013-10-16 68 views
1

我在Ruby中使用Webdriver,我想驗證頁面上存在三個文本。Ruby中的Webdriver,如何檢查元素是否存在

這裏是一塊HTML的我想驗證:

<table class="c1"> 
    <thead>many subtags</thead> 
    <tbody id="id1"> 
    <tr class="c2"> 
     <td class="first-child"> 
      <span>test1</span> 
     </td> 
     manny other <td></td> 
    </tr> 
    <tr class="c2"> 
     <td class="first-child"> 
      <span>test2</span> 
     </td> 
     manny other <td></td> 
    </tr> 
    <tr class="c2"> 
     <td class="first-child"> 
      <span>test3</span> 
     </td> 
     manny other <td></td>> 
</tr> 
    </tbody> 
</table> 

如何驗證 「測試1」, 「TEST2」 和 「TEST3」 一種利用

  • find_element
  • 這個網頁上
  • find_elements
  • getPageSource?

它的最佳方法是什麼?

非常感謝。

回答

2

我會用#find_elements的方法去,因爲有了其他2個選項就有機會得到沒有這樣的元素異常

首先其收集在一個陣列 -

array = driver.find_elements(:xpath,"//table[@class='c1']//tr[@class='c2']//span[text()='test1']") 

現在檢查數組的大小

"test1 is present" unless array.empty? 

我們可以測試TEST2 TEST3和以同樣的方式。

+0

我得到了一個錯誤爲c:/Ruby200-x64/lib/ruby/gems/2.0.0/gems/selenium-webdriver-2.35 .1/lib/selenium/webdriver/common/search_context.rb:59:在'find_elements'中:找不到元素:xapth(ArgumentError) – nzsquall

+0

@Eric現在試試..我寫了* xapth *而不是* xpath *。 。:) –

+1

感謝您的回覆。對不起,我試過了,但它仍然不起作用,數組大小始終爲0。 – nzsquall

1

下面的示例代碼將幫助你完成你的任務:

def check_element_exists 
    arr = ["test1", "test2", "test3"] 
    arr.each do |a| 
    if $driver.page_source.include? a 
     puts a 
    else 
     print a 
     puts " Not present" 
    end 
end