【问题标题】:How to pass special parameters in a function in Ruby Selenium Webdriver如何在 Ruby Selenium Webdriver 中的函数中传递特殊参数
【发布时间】:2013-02-19 02:54:46
【问题描述】:

我正在使用 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: can't convert String into an exact number”。

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

【问题讨论】:

    标签: ruby selenium webdriver


    【解决方案1】:

    一些建议:

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

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

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

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

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

    【讨论】:

    • 用这个调用函数解决了我的问题:wait_for_element_displayed({:id => "unique1"}, { :time => 20 })。非常感谢您的大力帮助。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-15
    • 2021-02-18
    • 2010-10-01
    相关资源
    最近更新 更多