0

我正在使用 Selenium Webdriver Ruby 创建一个函数,以便等待在我在此函数中设置的时间内显示的元素

我的函数将有两个参数(一个可选参数和一个参数是对象的定位器名称

所以,我的函数有两个参数,如下所示:

def wait_for_element_displayed(locator, options={})
    if options[:time]
       settime = options[:time]
    else
       settime= 60
    end
    @driver.find_element(locator).click
end

所以,我会这样调用这个函数:wait_for_element_displayed(:id=>"unique1", :time => "20")

但是,当我尝试以这种方式调用此函数时出现错误,错误是:“TypeError:无法将字符串转换为精确数字”。

任何人都请帮助我如何将两个参数(如我的场景)传递给函数?任何帮助表示赞赏。

4

1 回答 1

1

几点建议:

hash#fetch如果您正在查找的键不存在,您可以使用它来设置默认值:

time = options.fetch(:time) { 60 }

当两个参数都是散列并且您不区分它们时,Ruby 将很难解析您的输入。此外,您的错误让我认为您应该提供 20 作为整数而不是字符串。尝试调用这样的方法:

wait_for_element_displayed({:id => "unique1"}, { :time => 20 })

最后,我对 Selenium 了解不多,所以也许有人可以补充我最后一点。设置settime变量是否足以配置超时?

于 2013-02-19T03:08:19.483 回答