【问题标题】:Dynamically Choosing Elememt Types with Watir使用 Watir 动态选择元素类型
【发布时间】:2019-10-13 08:11:55
【问题描述】:

在 watir 中,我们可以通过文本查找元素,例如 browser.div(text:'some text')

在我的项目中,有很多常见元素,例如包含带有文本和类“项目”的 div 的菜单下拉菜单。在这种情况下,如果我想要一种更通用的方式来访问这些元素,我可以使用 browser.div(text:'some text', class: 'items')

我对其他 html 元素(如链接、跨度、按钮等)也有同样的情况。在某些情况下,相同的文本位于多个位置,但元素类型不同。无论如何我可以做一个方法来传递元素类型并仍然通过文本查找?

类似

def get_element_by_text(tag, text)
browser.tag(text:'some text')
end

【问题讨论】:

    标签: ruby watir


    【解决方案1】:

    可以,可以,写如下方法

    browser.element(tag_name: tag,text:'some text')
    

    在我上面的代码中,tag 是一个变量,它可以通过你的方法的形式参数接收任何标签名称。

    【讨论】:

      【解决方案2】:

      除了 Rajagopalan 的回答之外,如果您还想区分查找元素数组或单个元素,您始终可以使用 Ruby 的 send() 函数: https://apidock.com/ruby/Object/send

      tag = 'input'
      browser.send(tag, text: 'some text')
      # browser.input(text: 'some text')
      tag = 'inputs'
      browser.send(tag, text: 'some text')
      # browser.inputs(text: 'some text')
      

      所以在你的情况下:

      def get_element_by_text(tag, text)
        browser.send(tag, text: text)
      end
      

      或者让它更加动态

      def get_element(tag, *args)
        browser.send(tag, args)
      end
      

      注意:就我个人而言,我反对这种单一功能来统治他们所有的行为。标准 Watir 的代码平衡良好。这样做时,在不知不觉中,你正在重写 watir。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2018-06-17
        • 1970-01-01
        • 2011-09-24
        • 2012-01-11
        • 1970-01-01
        • 2020-10-02
        • 1970-01-01
        相关资源
        最近更新 更多