我不知道如何用文字描述我的问题,所以我尝试使用代码:)
Gebish,Groovy的selenium实现,这样做:
$("#myForm").with {
$("input").value("abc")
}
这看起来非常像jQuery,它几乎做同样的事情。
在此示例中,我将给定表单中> 中的每个输入值设置为“abc”。但是Groovy如何知道我是以哪种形式出现的?或者换句话说,带有输入的$
方法如何知道它的调用位置以及它与谁有关系?
我知道.with { ... }
是it
变量,而$("input")
正在“查看”它。如果我创建自己的方法$
能够看到那个 it 而不告诉方法有那个 it ,那会是什么样子?因为它是$("input").value("abc")
而不是$("input", it).value("abc")
我会自己研究,但遗憾的是我甚至不知道怎么称呼我所解释的。
我想它可以用于查看堆栈跟踪,但我知道这将是最糟糕的事情:D
答案 0 :(得分:2)
当您使用with
时,调用的任何方法或在闭包内访问的属性都会针对调用with
的对象进行解析。这是一个非常简单的例子:
'12345'.with {
// prints 5, because the string that "with" is called on has 5 characters
println size()
}
因此上面的代码在功能上与
相同println '12345'.size()
所以希望你的问题的答案现在应该是显而易见的
Groovy如何知道我的形式是什么?
因为这个
$("#myForm").with {
$("input").value("abc")
}
实际上是:
$("#myForm").$("input").value("abc")