错误的参数数量(1为0)(ArgumentError)
问题描述:
我正在尝试查找是否在使用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>'
任何帮助赞赏
答
我通常尽我所能避免使用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或黄瓜,他们的方法作为断言给定条件的手段存在。我没有理解这一点,因为看起来你已经在如何识别元素方面遇到了足够的麻烦,而且“一次只能处理一件事”。 –
答
对于这个例子/错误对,文本方法呢不要冒险。
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
现在你只有两行代码。
嗯我解决这个问题时遇到了问题:“我正在尝试查找是否使用Watir的页面表中的文本。”了解你想要做什么..你试图找到文字是什么?存在? –
'highrise-welli.rb:71'是? –
这样长的xpath总是一个坏主意:'/ html/body/form/div [2]/div/div [3]/div [4]/table/tbody/tr [2]/td [2]/a ' –