3
def wait_for_element_present(element)
    wait = Selenium::WebDriver::Wait.new(:timeout => 30);
    wait.until{driver.find_element(element)};
end

请看一下上面的Ruby代码,我有两个问题:

(1) 至于“Selenium::WebDriver::Wait.new(:timeout => 30)”,这里的“=>”是什么意思?我知道 ":timeout" 是一个红宝石符号,但是当使用它后跟一个 "=>" 和一个值 "30" 时,我会感到困惑。这是关于红宝石符号的某种技巧吗?

(2) 我们在定义哈希时也有符号“=>”对吗?像:

cars = {
'altima' => 'nissan',
'camry' => 'toyota',
'rx7' => 'mazda'
}
puts cars['rx7']   =>   mazda

这里的“=>”和问题(1)的意思一样吗?

我是红宝石新手,任何意见将不胜感激。提前致谢!

4

2 回答 2

5

是的,它具有相同的含义。在这两种情况下,它都是哈希的定义。如果哈希字面量是方法签名中的最后一个参数,Ruby 允许省略花括号。

例子:

def my_method a, b, h
  puts a
  puts b
  puts h
end


my_method(1, 2, :timeout => 30)
# my_method(1, 2, timeout: 30) # alternative syntax for ruby 1.9+
# >> 1
# >> 2
# >> {:timeout=>30}

请注意,它仅适用于哈希的最后一个参数。如果最后有多个散列,则必须对除最后一个之外的所有散列使用普通形式(带花括号)。

于 2012-08-29T13:05:49.027 回答
1
Selenium::WebDriver::Wait.new(:timeout => 30)

是简写

Selenium::WebDriver::Wait.new({:timeout => 30}) 

它在其参数中使用哈希。

于 2012-08-29T13:05:27.430 回答