Selenium webdriver 如何在不创建webdriver实例的情况下创建webdriver承诺?

Selenium webdriver 如何在不创建webdriver实例的情况下创建webdriver承诺?,selenium-webdriver,webdriverjs,Selenium Webdriver,Webdriverjs,我需要在webdriverJS测试脚本中执行一些node require命令,因为这些命令不会进入webdriverJS命令队列,所以我将它们包装到。然后()函数中(处理异步) e、 g var-webdriver=require('selenium-webdriver'); //创建webdriver实例,以便可以设置承诺链 var promise\u builder=new webdriver.builder().withCapabilities(webdriver.Capabilities

我需要在webdriverJS测试脚本中执行一些node require命令,因为这些命令不会进入webdriverJS命令队列,所以我将它们包装到
。然后()
函数中(处理异步)

e、 g

var-webdriver=require('selenium-webdriver');
//创建webdriver实例,以便可以设置承诺链
var promise\u builder=new webdriver.builder().withCapabilities(webdriver.Capabilities.chrome())。
build();
//将所有函数包装在webdriver承诺中,以便它们由webdriver管理
//命令队列
promise\u builder.sleep(0).then(function(){
//运行“非命令队列”命令
var测试=需要('./test_命令');
测试(助手、设置、webdriver、驱动程序);
}).然后(函数(){
//更多非webdriver命令
});
这里的问题(除了它不美观的事实)是浏览器实例被启动了——只是为了实现承诺链接

是否有更好的方法来创建初始承诺,例如webdriver api中用于创建承诺的静态方法?

这似乎有效:

// create an instance of webdriver.promise.ControlFlow
var flow = webdriver.promise.controlFlow();

// use webdriver.promise.controlFlow#execute() to schedule statements into command queue
flow.execute(function() {

    // Run "non-command-queue" commands
    var tests = require('./test_commands');
    tests(helpers, setup, webdriver, driver);

}).then(function(){
    // more non-webdriver commands
});
对此可以找到解释,即

promise manager的核心是ControlFlow类。您可以使用webdriver.promise.controlFlow()获取此类的实例。任务使用execute()函数排队。任务总是在事件循环的下一个循环中执行,一旦队列中在它之前的任务(如果有)完成


我将使用
webdriver.promise.createFlow(回调)
启动一个新的控制流

所以你会有这样的东西:

webdriver.promise.createFlow(function() {
    // Run "non-command-queue" commands
    var tests = require('./test_commands');
    tests(helpers, setup, webdriver, driver);
}).then(function(){
    // more non-webdriver commands
});
文件:

更新 我现在倾向于@u velour\u fog描述的
webdriver.promise.controlFlow.execute()
选项,因为在创建新的controlFlow时挂钩失败后,我会在
中出错。猜猜看,创建一个新的流会让mocha异步功能变得混乱