неверное количество аргументов (1 для 0) (ArgumentError) - PullRequest
0 голосов
/ 07 октября 2011

Я пытаюсь найти ли текст в таблице на странице, используя 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>

и вот код, который я использовал:

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>'

Любая помощь приветствуется

Ответы [ 2 ]

0 голосов
/ 13 октября 2011

Для пары пример / ошибка текстовый метод не принимает аргументы.

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

Теперь у вас есть только две строки кода.

0 голосов
/ 07 октября 2011

Обычно я делаю все возможное, чтобы избежать использования 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? 
...