【问题标题】:undefined method `text' for nil:NilClass (NoMethodError) for and action that was excutednil:NilClass (NoMethodError) 的未定义方法“文本”和已执行的操作
【发布时间】:2018-02-09 08:43:34
【问题描述】:

我有以下代码:

def find_status(arg)
    10.times do
      table = table_element(:css => 'css.path')
      break if table.visible?
    end
    table = table_element(:css => 'css.path')
    if table.visible?
      table.each do |row|
        STDOUT.puts row[1].text
        match = /^#{arg}\n(String \S+) at .+/.match(row[1].text)
        return match[1] if match
      end
    end
    return "status unknown"
  end

现在的问题是我收到以下错误:

undefined method `text' for nil:NilClass (NoMethodError)

奇怪的是它打印的正是我想要它打印的内容,并指出错误出现在“STDOUT”行上。 所以总而言之,它正在执行命令,但说 row 是一个 nil 值。

我们将不胜感激。

【问题讨论】:

  • 您希望它打印“nil”吗?
  • 我不希望它打印 nil,但我希望它“打印” nil,因为它应该不保存任何内容,而是打印我希望它保存的实际信息。跨度>
  • 如果您可以提供重现该问题的 HTML,将会有所帮助。特别是,您确定表格中的每一行都有 2 列吗?
  • 嘿@JustinKo - 这正是我正在研究的......显然其中一行是只有一列的页脚。这个问题可能会得到解决,但仍然是松散的。谢谢

标签: ruby cucumber page-object-gem


【解决方案1】:

如果我理解正确,请先测试 nil,然后在存在行时使用行文本。

STDOUT.puts row[1] ? row[1].text : 'nil'

【讨论】:

  • 我可以这样做,但是如果它再次触发错误但仍然在表中保留信息,那么它只是一个创可贴。我也可以使用“开始 - 救援”,但我想了解如果它实际上不是 nil 会触发什么。
猜你喜欢
  • 2013-11-14
  • 2013-01-14
  • 2017-10-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多