【发布时间】:2014-11-13 19:12:11
【问题描述】:
我刚刚想通了,我将我的方法更新为下面并将 args 传递给块执行:
def self.element(element_name, options = {}, &block)
define_method "#{element_name}" do |arg=nil|
find self.instance_exec(*arg, &block), options
end
end
BINGOOOO!!!
我的问题如下 -
我有一个采用 3 个参数(method_name、options 和 &block)的方法,这就是我将其组合在一起的方式:
def self.element(element_name, options = {}, &block)
define_method "#{element_name}" do
find self.instance_exec(&block), options
end
end
这就是我调用方法元素的方式:
element(:method_name, visible: 5) { "#css path to my element" }
现在我可以在任何我希望的地方使用它并执行任何我希望的操作:
method_name.click
...
到目前为止,这一直对我有用,但是当我遇到像下面的示例这样的动态元素的情况时,我需要重复元素查找(有时会重复 20 多次):
{ "#csspath1" }
{ "#csspath2" }
{ "#csspath3" }
{ "#csspath4" }
...
我正在通过块中的元素路径来处理这种情况,但还没有到达那里,我想做的是参数化可重复的数字:
{ |arg| "#csspath#{arg}" }
并且以某种方式让使用 define_method 创建的方法在我的块中传递参数,所以该方法看起来像:
method(1).click
method(2).click
method(3).click
method(4).click
我还没有到那里,欢迎任何想法....
【问题讨论】: