Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/465.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/40.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript soda.js链接API如何使用node.js为selenium测试站点工作_Javascript_Node.js_Selenium Rc_Soda - Fatal编程技术网

Javascript soda.js链接API如何使用node.js为selenium测试站点工作

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

我正在尝试创建一个node.js脚本,用于组织和编写脚本。我遇到的问题是,我根本不理解链接原理,尤其是
和()
方法,文档在解释它的工作原理方面非常薄弱

设想以下测试用例:

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