在单个函数中包装链接函数的Javascript
Javascript wrapping chained functions in a single function
我正在使用intern
进行一些javascript功能测试,并希望开始对我的测试代码进行一些抽象,使其更加可重用。我不确定这是否可能,但我正在努力实现以下目标-
我的原始代码有以下格式-
this.remote.get(URL).setFindTimeout(5000).end()
.findByXpath(xpath).click().type('XXX').end().
.findByXpath(xpath).click().type('YYY').end()
.findByCSSSelector(css).click().doSelectBoxStuff().end() //and so on...
其中,每一行都可能是输入字段的不同类型的输入。当输入这些不同的输入类型时,我试图将这些功能抽象为它们自己的功能,比如
this.remote.get(URL).setFindTimeout(5000).end()
.enterTextBox('XXX')
.enterTextBox('YYY')
.enterSelectBox('ZZZ')
function enterTextBox(val){
//execute .findByXpath(xpath).click().type(val).end()
}
function enterSelectBox(val){
//execute .findByCSSSelector(css).click().doSelectBoxStuff().end()
}
这样的事情可能发生吗?如果是,在我的两个新函数中,什么会调用.findByXPath(xpath)...
等?
你绝对可以。只需将函数作为参数传递给函数。您可以通过更改对象的原型来定义对象的方法。因此,为了实现你想要的行为,你应该写下:
// Ideally, replace this.remote.get(URL) with a base instance of the object
this.remote.get(URL).prototype.enterTextBox = function() {
return this.findByXpath(xpath).click().type(val).end()
}
this.remote.get(URL).setFindTimeout(5000).end()
.enterTextBox('XXX')
等等。关键是返回obj,这样它就可以被链接起来。
如果要执行链接,则函数必须返回执行操作的"Object"。
相关文章:
- 从函数JavaScript返回不可变数组/对象
- 将对象传递给函数.JavaScript
- 如何定义const函数javascript(语法糖)
- 新的日期函数javascript
- TypeError:this.getAttribute不是一个函数-javascript
- 从函数javascript发送变量
- 扩展自容器函数Javascript
- 从内部函数javascript内部分配外部函数的对象
- 使用函数JavaScript中的函数
- 在这里使用回调函数(JavaScript)有什么好处吗
- 来自函数 Javascript 的 NaN 返回值 ||函数执行顺序
- 将“e”传递给一个新函数 - javascript
- 调用函数中的一个函数——Javascript
- 传递的变量不适用于我的函数-Javascript
- 如何将类方法设置为等于多个函数?-Javascript
- 显示php中的函数javascript
- 如何使用php代码创建函数Javascript弹出框
- 未调用的外部函数-javascript
- 如何在类中运行函数.Javascript
- 关闭mouseover上的一个函数——Javascript,jQuery