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)中相同的含义吗?
我是一个红宝石新手,任何评论都将不胜感激。提前谢谢!
答案 0 :(得分:5)
是的,它的含义相同。在这两种情况下,它都是哈希的定义。如果Ruby是方法签名中的最后一个参数,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}
请注意,它仅适用于最后一个哈希参数。如果你最后有几个哈希,你必须使用普通形式(带花括号),除了最后一个。
答案 1 :(得分:1)
Selenium::WebDriver::Wait.new(:timeout => 30)
是
的简写Selenium::WebDriver::Wait.new({:timeout => 30})
它的参数需要一个哈希值。