Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/365.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 如何在webdriverjs中等待截图截图以获取截图_Javascript_Node.js_Selenium_Selenium Webdriver_Webdriver - Fatal编程技术网

Javascript 如何在webdriverjs中等待截图截图以获取截图

Javascript 如何在webdriverjs中等待截图截图以获取截图,javascript,node.js,selenium,selenium-webdriver,webdriver,Javascript,Node.js,Selenium,Selenium Webdriver,Webdriver,我使用以下类型的代码截图: var promise = driver.takeScreenshot(); promise.then(function (data) { var base64Data = data.replace(/^data:image\/png;base64,/, ''); fs.writeFileSync('screenshot.png', base64Data, 'base64'); }); 由于takeScreenshot的异步特性,很不幸,截图将在任意

我使用以下类型的代码截图:

var promise = driver.takeScreenshot();
promise.then(function (data) {
    var base64Data = data.replace(/^data:image\/png;base64,/, '');
    fs.writeFileSync('screenshot.png', base64Data, 'base64');
});
由于takeScreenshot的异步特性,很不幸,截图将在任意时间点截取,如果同时应用程序抛出异常,则根本不会编写截图


使用webdriverjs同步截图的正确方法是什么?

我通常在
之后的
钩子中截图。下面是cucumberjs中后钩子的示例代码。如果你用的是摩卡咖啡,它也有挂钩

 this.After(function (scenario, callback) {
        if(scenario.isFailed()){
            driver.takeScreenshot().then(function (buffer) {
                scenario.attach(new Buffer(buffer, 'base64').toString('binary'), 'image/png');
            });
        }
        driver.quit().then(function () {
                callback();
        });
 });
下面是WebDriverJS文档的一些摘录。所以,在截图之前,您可以在特定条件下向WebDriver发送等待命令,然后再截图。一般来说,钩子工作后的测试框架效果最好

WebDriverJS uses a promise "manager" to coordinate the scheduling and execution of all commands.

The promise manager maintains a queue of scheduled tasks, executing each once the one before it in the queue is finished.

该代码看起来正确,显示周围的代码。