Javascript soda.js链接API如何使用node.js为selenium测试站点工作
我正在尝试创建一个node.js脚本,用于组织和编写脚本。我遇到的问题是,我根本不理解链接原理,尤其是Javascript soda.js链接API如何使用node.js为selenium测试站点工作,javascript,node.js,selenium-rc,soda,Javascript,Node.js,Selenium Rc,Soda,我正在尝试创建一个node.js脚本,用于组织和编写脚本。我遇到的问题是,我根本不理解链接原理,尤其是和()方法,文档在解释它的工作原理方面非常薄弱 设想以下测试用例: var soda = require('soda'); var assert = require('assert'); var browser = soda.createClient({ host: 'localhost', port: 4444, url: 'http://www.google.com
和()
方法,文档在解释它的工作原理方面非常薄弱
设想以下测试用例:
var soda = require('soda');
var assert = require('assert');
var browser = soda.createClient({
host: 'localhost',
port: 4444,
url: 'http://www.google.com',
browser: 'firefox'
});
browser
.chain
.session()
.open("http://www.google.com", function() {
console.log("open complete");
})
.and(function() {
console.log("and");
})
.and(function() {
return function(browser) {
console.log("and2");
}
}())
.end(function() {
console.log("end");
})
我对链接API的理解是,它是为了防止回调地狱。所以如果我调用browser.method1().method2().method3()。然后方法2将等待方法1。method3将等待method2()等,这使您能够轻松地进行同步,但同时也提供了evented的功能
我想
open complete
and
and2
end
我明白了
什么?它显然与
和
方法有关,我认为这是声明您自己的任意函数,但它似乎没有遵循队列顺序。正如您在测试用例中所看到的,我尝试了两种声明and函数的方法,一种使用自执行函数闭包,另一种使用标准匿名函数。两种情况下的结果相同。如何让和()
遵循队列顺序?在我的头上重重一击之后,我终于能够找到这个方法,只需在github上倾注soda的源代码。基本上,.and()
方法会立即启动。每个链式请求只是添加到队列中,它在遇到.end()
调用之前不会开始处理队列
这样,
和()
中的代码将始终在任何其他调用的回调之前进行处理。这样一来,和()。我已经把问题贴出来了
and
and2
open complete
end