【问题标题】:converting string to element in page object将字符串转换为页面对象中的元素
【发布时间】:2017-09-14 10:29:35
【问题描述】:

带有 ruby​​ 的页面对象 gem,我已经为链接定义了一些页面对象,例如:

  link(:link_for_1week, text: /1 wk/)
  link(:link_for_2week, text: /2 wks/)
  link(:link_for_3week, text: /3 wks/)
  link(:link_for_4week, text: /4 wks/)
  link(:link_for_5week, text: /5 wks/)
  link(:link_for_6week, text: /6 wks/)
  link(:link_for_2months, text: /2 mo/)
  link(:link_for_3months, text: /3 mo/)
  link(:link_for_6months, text: /6 mo/)
  link(:link_for_1year, text: /1 yr/)

我有一种方法可以通过用户输入动态调用这些链接:

If I give user input as '1week' it has to click on 'link_for_1week'
If I give user input as '2week' it has to click on 'link_for_2week' 
and so

我不知道怎么做,我什至使用了instance_eval,但它不起作用:

def click_link(args:)
  self.browser.instance_eval('link_for_'+args+'_element.click')
end

但我无法点击链接。

我不确定是否使用这个 instance_eval.. 除了 instance_eval 也是最受欢迎的...

【问题讨论】:

    标签: ruby watir watir-webdriver pageobjects page-object-gem


    【解决方案1】:

    我没有使用过那个 gem,但是方法中的参数是错误的。而不是

    def click_link(args:) 
    

    使用

    def click_link(args) 
    

    【讨论】:

    • 我们使用某种格式,传递参数并不重要
    【解决方案2】:

    您可以使用send 将字符串转换为方法调用:

    def click_link(text)
      send("link_for_#{text}")
    end
    

    【讨论】:

    • 正是我想要的.. 谢谢
    【解决方案3】:

    下面提到的代码将解决您的问题:

    ("link_for_#{args}_element")

    当您需要从双引号中的任何 ruby​​ 变量中写入/获取动态值时,请使用“#{variable}”语法。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-10-25
      • 2020-08-25
      • 2021-11-10
      • 1970-01-01
      • 2014-08-30
      • 2022-01-20
      • 2012-12-02
      • 1970-01-01
      相关资源
      最近更新 更多