Ruby 参数数量错误(1代表0)(ArgumentError)

Ruby 参数数量错误(1代表0)(ArgumentError),ruby,watir,Ruby,Watir,我正在尝试使用Watir查找页面表格中的文本 表格各部分: <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?

我正在尝试使用Watir查找页面表格中的文本

表格各部分:

<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'">shop@basketcase.co</td>
以及我收到的错误消息:

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>'
C:/Ruby192/lib/ruby/gems/1.9.1/gems/watir-webdriver-0.3.4/lib/watir-webdriver/browser.rb:94:in'text':参数数量错误(1代表0)(ArgumentError)
来自C:/Ruby192/scripts/watir/highrisewilli.rb:71:in`'

非常感谢您的任何帮助

我通常会尽我所能避免使用xpath,因为它速度慢,容易创建不可读的代码,而且正确的路径也很棘手

考虑创建一个正则表达式,并使用它来指定要查找的元素以及.exists方法。这假定您知道如何识别正在搜索的表,并且文本包含在表中的单个单元格中

targettext = Regexp.new(@fullName)
if browser.table(:how, 'what').cell(:text, targettext).exists? 
  puts 'success message'
else
  puts 'fail message'
end
如果您不是在@fullname中读取,并且它可以是硬编码的,那么您可以跳过一个步骤,只指定inline

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

对于示例/错误对,text方法不接受args

in `text': wrong number of arguments (1 for 0) (ArgumentError)
当它说“参数”时,看看你正在使用的方法

此外,使用rspecgem意味着编写更少的代码。然后,您可以这样做(见下文),而不是滚动您自己的错误处理

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

现在您只有两行代码

嗯,我在解析这句话时遇到了困难:“我试图用Watir查找页面表格中的文本是否存在。”为了理解您想要做什么。。您正在尝试查找文本是否为什么?存在?而高楼井.rb:71是吗?这么长的xpath总是一个坏主意:
/html/body/form/div[2]/div/div[3]/div[4]/table/tbody/tr[2]/td[2]/a
我通常不会对问题投反对票,但无法理解根据措辞提出的问题,在这种情况下,由于用户对评论中提出的任何请求完全没有反应,或者编辑他们的问题以使其更清楚,导致我这样做。值得一提的是,我完全同意Jason关于使用Rspec或Cucumber的建议,以及他们的.when方法作为断言给定条件存在的手段。我没有涉及到这一点,因为你似乎在如何识别元素方面遇到了足够的麻烦,而且“一次只做一件事”。
targettext = Regexp.new(@fullName)
browser.table(:how, 'what').cell(:text, targettext).exists?.should == true