【问题标题】:browser.saveScreenshot() hangs when calledbrowser.saveScreenshot() 调用时挂起
【发布时间】:2017-04-26 11:11:03
【问题描述】:

您好,我正在为 Cordova 应用程序编写自动化测试。 我想保存每个页面的截图,这是我的代码。

 it("should take screenshot", function() {
     return browser.contexts().then(function(cnt){
         console.log(cnt[1]);
         return browser.context(cnt[1]);
           }).then(function(){
             return browser.saveScreenshot("/Users/User/Documents/dev/engineerappcopy/VGimages/nexLogin.png")
});
});

这是我的 Appium 控制台:

[HTTP] --> GET /wd/hub/session/610d95af-6501-4c72-ac38-0184a8608dfd/screenshot {}
[MJSONWP] Driver proxy active, passing request on via HTTP proxy
[JSONWP Proxy] Proxying [GET /wd/hub/session/610d95af-6501-4c72-ac38-0184a8608dfd/screenshot] to [GET http://127.0.0.1:9515/wd/hub/session/4d5f3f8a24e28f7fbf65eebc47cc02d8/screenshot] with body: {}

[HTTP] --> GET /wd/hub/status {}

[MJSONWP] Calling AppiumDriver.getStatus() with args: []

[MJSONWP] Responding to client with driver.getStatus() result: {"build":{"version":"1.5.3"...
[HTTP] <-- GET /wd/hub/status 200 14 ms - 83 

我是自动化和 JS 的新手,感谢您的建议。

【问题讨论】:

    标签: javascript node.js cordova automation appium


    【解决方案1】:

    原来 savescreenshot() 与 cordova 应用程序不兼容。 不过我确实找到了解决办法!

    使用这些命令,我​​们可以直接从模拟器截屏:

    adb pull /sdcard/screenshot.png screenshot.png
    adb shell /system/bin/screencap -p /sdcard/screenshot.png
    

    那么我们如何以编程方式做到这一点? 那么nodeJS有'child_process'可以调用终端的命令!

          it("should take screenshot", function() {
        const exec = require('child_process').exec;
        exec('adb shell /system/bin/screencap -p /sdcard/tester.png', (error, stdout, stderr) => {
           if (error) {
             console.error(`exec error: ${error}`);
             return;
           }
           console.log(`stdout: ${stdout}`);
           console.log(`stderr: ${stderr}`);
        });
        exec('adb pull /sdcard/tester.png tester.png', (error, stdout, stderr) => {
               if (error) {
                 console.error(`exec error: ${error}`);
                 return;
               }
               console.log(`stdout: ${stdout}`);
               console.log(`stderr: ${stderr}`);
            });
    
    
    });
    

    所以使用这样的 ^,我可以截取保存到模拟器 sd 卡的屏幕截图,然后将此屏幕截图拉到我的目录中!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-07-07
      • 2018-03-08
      • 2017-12-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多