Ruby 用Watir动态选择元素类型

Ruby 用Watir动态选择元素类型,ruby,watir,Ruby,Watir,在watir中,我们能够通过文本查找元素,例如browser.div(text:'some text') 在我的项目中,有很多常用元素,比如包含带有文本和类“items”的div的菜单下拉列表。在本例中,如果我想要一种更通用的方式来访问这些元素,我可以使用browser.div(text:'some text',class:'items') 我对其他html元素(如链接、跨距、按钮等)也有同样的看法。有些情况下,相同的文本位于多个位置,但只是不同的元素类型。是否有一种方法可以传递元素类型,但仍然

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

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

我对其他html元素(如链接、跨距、按钮等)也有同样的看法。有些情况下,相同的文本位于多个位置,但只是不同的元素类型。是否有一种方法可以传递元素类型,但仍然通过文本进行查找

差不多

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

是的,你可以写下面的方法

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

在我上面的代码中,
tag
是通过方法的形式参数接收任何标记名的变量。

是的,您可以编写以下方法

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

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

除了Rajagopalan的答案之外,如果您还想区分查找元素数组还是单个元素,您可以始终使用Ruby的
send()
函数:

因此,在你的情况下:

def get_element_by_text(tag, text)
  browser.send(tag, text: text)
end
或者让它更具活力

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

注意:就我个人而言,我反对用一种功能来规范他们所有的行为。标准瓦蒂尔在代码方面处于良好的平衡状态。执行此操作时,在您知道之前,您正在编写watir。

除了Rajagopalan的答案之外,如果您还想区分查找元素数组还是单个元素,您可以始终使用Ruby的
send()
函数:

因此,在你的情况下:

def get_element_by_text(tag, text)
  browser.send(tag, text: text)
end
或者让它更具活力

def get_element(tag, *args)
  browser.send(tag, args)
end
注意:就我个人而言,我反对用一种功能来规范他们所有的行为。标准瓦蒂尔在代码方面处于良好的平衡状态。当你这么做的时候,在你意识到之前,你在写watir