2011-10-07 125 views
-6

我正在嘗試查找是否在使用Watir的頁面的表中的文本。錯誤的參數數量(1爲0)(ArgumentError)

零件表:

<td class="left"><a class="xoName" name="Basket Case" href="View.aspx?contactID=2D67AD97-7486-4DB9-AB83-A2C76B116618">Basket Case</a> 
</td> 
<td class="left" onclick="parent.location='View.aspx?contactID=2D67AD97-7486-4DB9-AB83- A2C76B116618'">[email protected]</td> 

這裏是我使用的代碼:

if b1.text(:xpath =>'/html/body/form/div[2]/div/div[3]/div[4]/table/tbody/tr[2]/td[2]/a').include?(@fullName) 
    puts " Test Passed. Found the contact: " + @fullName + ". Actual Results match Expected Results." 
else 
    puts " Test Failed! Could not find contact: " + @fullName 
end 

和我得到的錯誤信息:

C:/Ruby192/lib/ruby/gems/1.9.1/gems/watir-webdriver-0.3.4/lib/watir-webdriver/browser.rb:94:in `text': wrong number of arguments (1 for 0) (ArgumentError) 
    from C:/Ruby192/scripts/watir/highrise-welli.rb:71:in `<main>' 

任何幫助讚賞

+0

嗯我解決這個問題時遇到了問題:「我正在嘗試查找是否使用Watir的頁面表中的文本。」瞭解你想要做什麼..你試圖找到文字是什麼?存在? –

+0

'highrise-welli.rb:71'是? –

+0

這樣長的xpath總是一個壞主意:'/ html/body/form/div [2]/div/div [3]/div [4]/table/tbody/tr [2]/td [2]/a ' –

回答

0

我通常盡我所能避免使用xpath,因爲它很慢會產生難以讀取的代碼,並且正確地獲取路徑是棘手的。

考慮創建一個正則表達式並使用它來指定您正在查找的元素以及.exists方法。這假定您知道如何識別您正在搜索的表格,並且文本包含在表格中的單個單元格中。

targettext = Regexp.new(@fullName) 
if browser.table(:how, 'what').cell(:text, targettext).exists? 
    puts 'success message' 
else 
    puts 'fail message' 
end 

如果你沒有在@fullname閱讀,它可以被硬編碼,那麼你可以跳過某個步驟,只需指定內嵌

if browser.table(:how, 'what').cell(:text, /textyouaresearchingfor/).exists? 
+0

對於它的價值,我完全同意Jason的建議,即使用Rspec或黃瓜,他們的方法作爲斷言給定條件的手段存在。我沒有理解這一點,因爲看起來你已經在如何識別元素方面遇到了足夠的麻煩,而且「一次只能處理一件事」。 –

0

對於這個例子/錯誤對,文本方法呢不要冒險。

in `text': wrong number of arguments (1 for 0) (ArgumentError) 

只要它說「參數」,看看你使用的方法。

此外,使用rspec gem,意味着寫更少的代碼。然後你可以做到這一點(見下文)而不是滾動你自己的錯誤處理。

targettext = Regexp.new(@fullName) 
browser.table(:how, 'what').cell(:text, targettext).exists?.should == true 

現在你只有兩行代碼。

相關問題