2016-12-11 8 views
0

こんにちは、私はCordovaアプリケーションのオートメーションテストを書いています。 各ページのスクリーンショットを保存したい、ここに私のコードです。自動化とJSへbrowser.saveScreenshot()が呼び出されたときにハングする

[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 

イム新しい、何かアドバイスに感謝:

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コンソールです。

答えて

0

これは、savescreenshot()と判明しました。コードワアプリケーションと互換性がありません。 しかし、私は解決策を見つけました!

我々はエミュレータから直接スクリーンショットを取ることができ、これらのコマンドを使用する:

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

は、どのように我々はプログラムでこれを行うことができますか? well 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カードに保存されているスクリーンショットを取り、その後、私のディレクトリ上にこのスクリーンショットを引くことができます!

関連する問題