错误:无法捕获屏幕截图 - 使用Protractor和Appium的Android混合应用程序 [英] Error: Unable to capture screenshot - Android hybrid app using Protractor and Appium
问题描述
我正在使用Protractor进行测试自动化。我使用Protractor(jasmine)和Appium完美地测试了我的混合Android应用程序。但是我无法让 browser.takeScreenshot()
函数正常工作。所有其他测试工作完全像点击按钮或类似的东西。
我创建了一个新的空白应用程序,以排除插件导致此问题。没有Cordova插件阻止屏幕截图功能,我可以使用Android设备本身截取屏幕截图。
我试过这个 StackOverflow 回答(以及更多),但没有成功(似乎没有人遇到过这个问题)。
我还使用了 protractor-jasmin2-screenshot-reporter 要排除,我的截屏代码无法正常工作,但是我得到相同的结果。令人沮丧的是,当我使用browserName:'Chrome'并让测试在我的设备上打开Chrome并致电www.google.com并让我的代码截取屏幕截图时,它运行正常。只有在我的混合应用程序中,截取屏幕截图不起作用。
( browser.takeScreenshot()。然后(函数(png){...
代码来自官方量角器页面和其他可靠来源)。
我的规格
- 量角器:5.0.0
- Appium(桌面客户端):1.4.16.1(最新版本)
- Windows 10 Enterprise 64位
- Chromedriver:2.27(最新版本)
- Angular:1.5.3
- Node.js:6.9.1
- Android:6.0.1和4.4.2(Galaxy S6和Alcatel Pixi)
- Cordova 6.4.0
My Protractor config.js
exports.config = {
seleniumAddress:'http:// localhost:4723 / wd / hub',
//参考:https://github.com/appium/sample-code/blob /master/sample-code/examples/node/helpers/caps.js
功能:{
//本地appium需要
platformVersion:'',
platformName:'',
deviceName:'',
//量角器需要
browserName:'',
autoWebview:true,
//更改这些给你的绝对路径或在APPIUM客户端设置
app:'C:/Projekte/WifiWizardTestApp/platforms/android/build/outputs/apk/android-debug.apk',
newCommandTimeout:60
},
//本地appium需要
baseUrl:'http:// localhost:8080',
//在onPrepare中配置wd
// wdBridge有助于将wd驱动程序与其他selenium客户端桥接起来
//请参阅https://github.com/sebv/wd-bridge/blob/master/README.md
onPrepare:function(){
var wd = require('wd');
var protractor = require('量角器');
var wdBridge = require('wd-bridge')(量角器,wd);
wdBridge.initFromProtractor(exports.config);
},
};
我的test.spec.js
var fs = require('fs');
describe('测试浏览状态',function(){
it('应该能够截屏',功能(完成){
browser.sleep(2000);
browser.takeScreenshot()。then(function(png){
console.log('browser.takeScreenshot()');
var stream = fs.createWriteStream('screenshot.png');
stream.write(new Buffer(png,'base64'));
stream.end();
done();
});
});
it('应该能够采取其他截图',函数(){
browser.takeScreenshot ().then(function(png){
console.log('browser.takeScreenshot()');
var stream = fs.createWriteStream('screenshot2.png');
stream .write(new Buffer(png,'base64'));
stream.end();
});
});
});
我的控制台输出(Android 6.0.1)
C:\ Projekte \ WifiWizardTestApp>量角器protractor.config.js --specs tests / browse.spec.js
[09:27:44] I /托管 - 在http:// localhost:4723 / wd / hub使用selenium服务器
[09:27:44] I / launcher - 运行WebDriver的1个实例
开始
一个Jasmine规范时间到。重置WebDriver控制流。
FA Jasmine规格超时。重置WebDriver控制流。
F
失败:
1)测试浏览状态应该能够截取
消息:
错误:超时 - 异步回调不是在jasmine.DEFAULT_TIMEOUT_INTERVAL指定的超时内调用。
堆栈:
错误:超时 - 在jasmine.DEFAULT_TIMEOUT_INTERVAL指定的超时时间内未调用异步回调。
attimeout(timers.js:365:14)
at tryOnTimeout(timers.js:237:5)
at Timer.listOnTimeout(timers.js:207:5)
2)测试浏览状态应该能够采取其他截图
消息:
错误:超时 - 在jasmine.DEFAULT_TIMEOUT_INTERVAL指定的超时内未调用异步回调。
堆栈:
错误:超时 - 在jasmine.DEFAULT_TIMEOUT_INTERVAL指定的超时时间内未调用异步回调。
attimeout(timers.js:365:14)
at tryOnTimeout(timers.js:237:5)
at Timer.listOnTimeout(timers.js:207:5)
2规格,2次失败
完成60.04秒
我的控制台输出(Android 4.4.2)
C:\ Projekte \ WifiWizardTestApp>量角器protractor.config.js --specs tests / browse.spec.js
[15:15:49]我/托管 - 在http:// localhost:4723 / wd / hub
[15:15:49]使用selenium服务器I / launcher - 运行1个WebDriver实例
开始
FF
失败:
1)测试浏览状态应该能够截取屏幕
消息:
失败:未知错误:未处理的检查员错误:{code: - 32603,message:无法捕获屏幕截图}
(会话信息:webview = 30.0.0.0)
(驱动程序信息:chromedriver = 2.27.440174(e97a722caafc2d3a8b807ee115bfb307f7d2cfd9),platform = Windows NT 10.0.10586 x86_64)
Stack:
We bDriverError:未知错误:未处理的检查员错误:{code: - 32603,message:无法捕获屏幕截图}
(会话信息:webview = 30.0.0.0)
(驱动程序信息: chromedriver = 2.27.440174(e97a722caafc2d3a8b807ee115bfb307f7d2cfd9),platform = Windows NT 10.0.10586 x86_64)
at WebDriverError(C:\ Users \ mkaiser \ AppData \Roaming\\\
pm\\\
ode_modules \protractor \ node_modules\selenium-webdriver \lib \ error.js:27:5)
at Object.checkLegacyResponse(C:\ Users \ mkaiser\AppData \Roaming\\\
pm\\\
ode_modules \ protractor \\\
ode_modules\selenium-webdriver \lib \ error.js:505:15)
at parseHttpResponse(C:\ Users \ mkaiser \ AppData \ Roaming \ nnpm \ node_modules \\ \\ protractor\\\
ode_modules\selenium-webdriver\lib\http.js:509:13)
at doSend.then.response(C:\ Users \ mkaiser \ AppData \Roaming\ npm\\\
ode_modules\protractor\\\
ode_modules\selenium-webdriver\lib\http.js:440:13)
at process._tickCallback(internal / process / next_tick.js:103:7)
来自:任务:WebDriver.takeScreenshot()
at WebDriver.schedule(C:\ Users \ mkaiser \ AppData \ Rooaming \\\
pm \\\
ode_modules \protractor \\\
ode_modules \ selenium -webdriver \lib \webdriver.js:816:17)
at WebDriver.takeScreenshot(C:\ Users \ mkaiser\AppData \ Rooaming \\\
pm\\\
ode_modules \protractor \ node_modules \ selenium-webdriver \lib \webdriver.js:1092:17)
在ProtractorBrowser.to。(匿名函数)[as takeScreenshot](C:\ Users \ mkaiser \ AppData \Roaming \ nnpm \\\
ode_modules \protractor \lib \browser.ts:94:25)
at Object。< anonymous> (C:\ Projekte \WifiWizardTestApp\tests\browse.spec.js:14:17)
at C:\ Users \ mkaiser\AppData\Roaming\\\
pm\\\
ode_modules \\ \\ protractor\\\
ode_modules\jasminewd2 \index.js:98:15
at new ManagedPromise(C:\ Users \ mkaiser \ AppData \Roaming\\\
pm\\\
ode_modules \protractor \ node_modules \selenium-webdriver \lib \promise.js:1067:7)
at controlFlowExecute(C:\ Users \ mkaiser \ AppData \Roaming\\\
pm\\\
ode_modules \protractor \\ \\ nnode_modules; \\ _jasminewd2 \index.js:87:18)
at TaskQueue.execute_(C:\ Users \ mkaiser \ AppData \ Rooaming \\\
pm \ node_modules \protractor \ node_modules \ selenium-webdriver \lib \promise.js:2970:14)
at TaskQueue.executeNext_(C:\ Users \ mkaiser \ AppData \Roaming\\\
pm\\\
ode_modules \protractor \\\
ode_modules \ selenium-webdriver \lib \promise.js:2953:27)asyncRun的
(C:\ Users \ mkaiser \ AppData \Roaming\\\
pm\\\
ode_modules \protractor \ node_modules\selenium-webdriver \lib \promise.js:2813:27)
来自:任务:在对象的控制流
中运行它(应该可以截取屏幕截图)。 <匿名> (C:\ Users\mkaiser\AppData\Roaming\\\
pm\\\
ode_modules\protractor\\\
ode_modules\jasminewd2 \ index.js:86:14)
来自异步测试:
错误
套房。< anonymous> (C:\ Projekte \WifiWizardTestApp\tests\browse.spec.js:8:5)
at Object。< anonymous> (C:\ Projekte \ WifiWizardTestApp\tests\browse.spec.js:4:1)
在Module._compile(module.js:570:32)
在Object.Module。 _extensions..js(module.js:579:10)
在Module.load(module.js:487:32)
在tryModuleLoad(module.js:446:12)
2)测试浏览状态应该能够拍摄其他截图
消息:
失败:未知错误:未处理的检查错误:{code: - 32603,message:Unable捕获屏幕截图}
(会话信息:webview = 30.0.0.0)
(驱动程序信息:chromedriver = 2.27.440174(e97a722caafc2d3a8b807ee115bfb307f7d2cfd9),platform = Windows NT 10.0.10586 x86_64)
Stack :
WebDriverError:未知错误:未处理的检查员错误:{code: - 32603,message:无法捕获屏幕截图}
(会话信息:webview = 30.0.0.0)
(驱动程序信息:chromedriver = 2.27.440174(e97a722caafc2d3a8b807ee115bfb307f7d2cfd9),platform = Windows NT 10.0.10586 x86_64)
at WebDriverError(C:\ Users \ mkaiser \ AppData \Roaming\\\
pm\\\
ode_modules\protractor\\\
ode_modules\selenium-webdriver \lib \ error.js:27:5)
at Object.checkLegacyResponse(C:\ Users \ mkaiser\AppData \ Rooaming \\\
pm\\\
ode_modules\protractor\\\
ode_modules\selenium-webdriver \lib \ error.js:505:15) parseHttpResponse上的
(C:\ Users \ mkaiser \ AppData \Roaming\\\
pm\\\
ode_modules \protractor \ node_modules \ selenium-webdriver \ lib \ http.js:509:13 )doSend.then.response上的
(C:\ Users \ mkaiser \ AppData \Roaming\\\
pm\\\
ode_modules \protractor \\\
ode_modules \ selenium-webdriver \ lib \ http://http。 js:440:13)
at process._tickCallback(internal / process / next_tick.js:103:7)
来自:任务:WebDriver.takeScreenshot()
at WebDriver.schedule(C :\Users\mkaiser \ AppData \Roaming\\\
pm\\\
ode_modules \protractor \\\
ode_modules\selenium-webdriver \lib \webdriver.js:816:17)
at WebDriver.takeScreenshot(C:\ Users \ mkaiser\AppData\Roaming\\\
pm\\\
ode_modules\protractor\\\
ode_modules\selenium-webdriver \lib\webdriver.js:1092:17)
at ProtractorBrowser.to。(匿名功能)[as takeScreenshot](C:\ Users \ mkaiser \ AppData \Roaming\\\
pm\\\
ode_modules\protractor\lib\browser.ts:94:25)
at Object。 <匿名> (C:\ Projekte \WifiWizardTestApp\tests\browse.spec.js:26:17)
at C:\ Users \ mkaiser\AppData\Roaming\\\
pm\\\
ode_modules \\ \\ Protractor \\\
ode_modules\jasminewd2 \index.js:102:25
at new ManagedPromise(C:\ Users \ mkaiser \ AppData \Roaming\\\
pm\\\
ode_modules \protractor \ node_modules \selenium-webdriver \lib \promise.js:1067:7)
at controlFlowExecute(C:\ Users \ mkaiser \ AppData \Roaming\\\
pm\\\
ode_modules \protractor \\ \\ nnode_modules; \\ _jasminewd2 \index.js:87:18)
at TaskQueue.execute_(C:\ Users \ mkaiser \ AppData \ Rooaming \\\
pm \ node_modules \protractor \ node_modules \ selenium-webdriver \lib \promise.js:2970:14)
at TaskQueue.executeNext_(C:\ Users \ mkaiser \ AppData \Roaming\\\
pm\\\
ode_modules \protractor \\\
ode_module s\selenium-webdriver\lib\promise.js:2953:27)asyncRun的
(C:\ Users \ mkaiser \ AppData \Roaming\\\
pm\\\
ode_modules \protractor \\ \\ _node_modules\selenium-webdriver \lib \promise.js:2860:25)
来自:任务:在控制流
中运行它(应该能够拍摄其他屏幕截图)对象<匿名> (C:\ Users\mkaiser\AppData\Roaming\\\
pm\\\
ode_modules\protractor\\\
ode_modules\jasminewd2 \ index.js:86:14)
来自异步测试:
错误
套房。< anonymous> (C:\ Projekte \ WifiWizardTestApp\tests\browse.spec.js:24:5)
at Object。< anonymous> (C:\ Projekte \ WifiWizardTestApp\tests\browse.spec.js:4:1)
在Module._compile(module.js:570:32)
在Object.Module。 _extensions..js(module.js:579:10)
在Module.load(module.js:487:32)
在tryModuleLoad(module.js:446:12)
2规格,2次失败
完成2.258秒
[15:17:49]我/发射器 - 0个实例的WebDriver仍在运行
[15:17:49 ]我/发射器 - #01失败2次测试
[15:17:49]我/发射器 - 整体:2次失败规格
[15:17:49] E /发射器 - 退出流程错误代码1
wdBrowser.context('NATIVE_APP')。then(()=> {
browser.takeScreenshot()。then(function(png){
console.log('browser。 takeScreenshot()');
var stream = fs.createWriteStream('screenshot.png');
stream.write(new Buffer(png,'base64'));
stream.end(function(){
wdBrowser.context(< your webview>)。then(done);
});
})
});
其中wdBrowser是由wdBridge设置的全局变量。应该工作 - 有类似的问题(无法截取屏幕截图,但没有像你一样的错误消息)
您可以从appium日志中获取您的webview名称/ ID。 / p>
I'm using Protractor for test automation. I tested my hybrid Android app perfectly using Protractor (jasmine) and Appium. But I can not get the browser.takeScreenshot()
function to work properly. All other test work perfectly like clicking buttons or stuff like that.
I created a new blank app to rule out that a plugin causes this problem. No Cordova Plugin prevents the screenshot capability and I am able to take screenshots with the android device itself.
I tried this StackOverflow answer (and many many more), but with no success (and it seems like nobody ever experienced this issue).
I also used the protractor-jasmin2-screenshot-reporter to rule out, that my code for taking the screenshot is not working, but I get the same result. Intresstingly, when I use browserName: 'Chrome' and let the test open Chrome on my device and call www.google.com and let my code take a screenshot, it works fine. Only in my hybrid app, taking a screenshot does not work.
(The browser.takeScreenshot().then(function (png) {...
code is from the official protractor page and other reliable sources).
My Specs
- Protractor: 5.0.0
- Appium (Desktop Client): 1.4.16.1 (latest version)
- Windows 10 Enterprise 64 Bit
- Chromedriver: 2.27 (latest version)
- Angular: 1.5.3
- Node.js: 6.9.1
- Android: 6.0.1 and 4.4.2 (Galaxy S6 and Alcatel Pixi)
- Cordova 6.4.0
My Protractor config.js
exports.config = {
seleniumAddress : 'http://localhost:4723/wd/hub',
// Reference: https://github.com/appium/sample-code/blob/master/sample-code/examples/node/helpers/caps.js
capabilities : {
// needed by local appium
platformVersion : '',
platformName : '',
deviceName : '',
// needed by protractor
browserName : '',
autoWebview : true,
// CHANGE THIS TO YOUR ABSOLUTE PATH OR SET IT IN APPIUM CLIENT
app : 'C:/Projekte/WifiWizardTestApp/platforms/android/build/outputs/apk/android-debug.apk',
newCommandTimeout : 60
},
//needed for local appium
baseUrl : 'http://localhost:8080',
//configuring wd in onPrepare
//wdBridge helps to bridge wd driver with other selenium clients
//See https://github.com/sebv/wd-bridge/blob/master/README.md
onPrepare : function () {
var wd = require('wd');
var protractor = require('protractor');
var wdBridge = require('wd-bridge')(protractor, wd);
wdBridge.initFromProtractor(exports.config);
},
};
My test.spec.js
var fs = require('fs');
describe('Testing the browse state', function () {
it('should be able to take a screenshot', function (done) {
browser.sleep(2000);
browser.takeScreenshot().then(function (png) {
console.log('browser.takeScreenshot()');
var stream = fs.createWriteStream('screenshot.png');
stream.write(new Buffer(png, 'base64'));
stream.end();
done();
});
});
it('should be able to take an other screenshot', function () {
browser.takeScreenshot().then(function (png) {
console.log('browser.takeScreenshot()');
var stream = fs.createWriteStream('screenshot2.png');
stream.write(new Buffer(png, 'base64'));
stream.end();
});
});
});
My console output (Android 6.0.1)
C:\Projekte\WifiWizardTestApp>protractor protractor.config.js --specs tests/browse.spec.js
[09:27:44] I/hosted - Using the selenium server at http://localhost:4723/wd/hub
[09:27:44] I/launcher - Running 1 instances of WebDriver
Started
A Jasmine spec timed out. Resetting the WebDriver Control Flow.
FA Jasmine spec timed out. Resetting the WebDriver Control Flow.
F
Failures:
1) Testing the browse state should be able to take a screenshot
Message:
Error: Timeout - Async callback was not invoked within timeout specified by jasmine.DEFAULT_TIMEOUT_INTERVAL.
Stack:
Error: Timeout - Async callback was not invoked within timeout specified by jasmine.DEFAULT_TIMEOUT_INTERVAL.
at ontimeout (timers.js:365:14)
at tryOnTimeout (timers.js:237:5)
at Timer.listOnTimeout (timers.js:207:5)
2) Testing the browse state should be able to take an other screenshot
Message:
Error: Timeout - Async callback was not invoked within timeout specified by jasmine.DEFAULT_TIMEOUT_INTERVAL.
Stack:
Error: Timeout - Async callback was not invoked within timeout specified by jasmine.DEFAULT_TIMEOUT_INTERVAL.
at ontimeout (timers.js:365:14)
at tryOnTimeout (timers.js:237:5)
at Timer.listOnTimeout (timers.js:207:5)
2 specs, 2 failures
Finished in 60.04 seconds
My console output (Android 4.4.2)
C:\Projekte\WifiWizardTestApp>protractor protractor.config.js --specs tests/browse.spec.js
[15:15:49] I/hosted - Using the selenium server at http://localhost:4723/wd/hub
[15:15:49] I/launcher - Running 1 instances of WebDriver
Started
FF
Failures:
1) Testing the browse state should be able to take a screenshot
Message:
Failed: unknown error: unhandled inspector error: {"code":-32603,"message":"Unable to capture screenshot"}
(Session info: webview=30.0.0.0)
(Driver info: chromedriver=2.27.440174 (e97a722caafc2d3a8b807ee115bfb307f7d2cfd9),platform=Windows NT 10.0.10586 x86_64)
Stack:
WebDriverError: unknown error: unhandled inspector error: {"code":-32603,"message":"Unable to capture screenshot"}
(Session info: webview=30.0.0.0)
(Driver info: chromedriver=2.27.440174 (e97a722caafc2d3a8b807ee115bfb307f7d2cfd9),platform=Windows NT 10.0.10586 x86_64)
at WebDriverError (C:\Users\mkaiser\AppData\Roaming\npm\node_modules\protractor\node_modules\selenium-webdriver\lib\error.js:27:5)
at Object.checkLegacyResponse (C:\Users\mkaiser\AppData\Roaming\npm\node_modules\protractor\node_modules\selenium-webdriver\lib\error.js:505:15)
at parseHttpResponse (C:\Users\mkaiser\AppData\Roaming\npm\node_modules\protractor\node_modules\selenium-webdriver\lib\http.js:509:13)
at doSend.then.response (C:\Users\mkaiser\AppData\Roaming\npm\node_modules\protractor\node_modules\selenium-webdriver\lib\http.js:440:13)
at process._tickCallback (internal/process/next_tick.js:103:7)
From: Task: WebDriver.takeScreenshot()
at WebDriver.schedule (C:\Users\mkaiser\AppData\Roaming\npm\node_modules\protractor\node_modules\selenium-webdriver\lib\webdriver.js:816:17)
at WebDriver.takeScreenshot (C:\Users\mkaiser\AppData\Roaming\npm\node_modules\protractor\node_modules\selenium-webdriver\lib\webdriver.js:1092:17)
at ProtractorBrowser.to.(anonymous function) [as takeScreenshot] (C:\Users\mkaiser\AppData\Roaming\npm\node_modules\protractor\lib\browser.ts:94:25)
at Object.<anonymous> (C:\Projekte\WifiWizardTestApp\tests\browse.spec.js:14:17)
at C:\Users\mkaiser\AppData\Roaming\npm\node_modules\protractor\node_modules\jasminewd2\index.js:98:15
at new ManagedPromise (C:\Users\mkaiser\AppData\Roaming\npm\node_modules\protractor\node_modules\selenium-webdriver\lib\promise.js:1067:7)
at controlFlowExecute (C:\Users\mkaiser\AppData\Roaming\npm\node_modules\protractor\node_modules\jasminewd2\index.js:87:18)
at TaskQueue.execute_ (C:\Users\mkaiser\AppData\Roaming\npm\node_modules\protractor\node_modules\selenium-webdriver\lib\promise.js:2970:14)
at TaskQueue.executeNext_ (C:\Users\mkaiser\AppData\Roaming\npm\node_modules\protractor\node_modules\selenium-webdriver\lib\promise.js:2953:27)
at asyncRun (C:\Users\mkaiser\AppData\Roaming\npm\node_modules\protractor\node_modules\selenium-webdriver\lib\promise.js:2813:27)
From: Task: Run it("should be able to take a screenshot") in control flow
at Object.<anonymous> (C:\Users\mkaiser\AppData\Roaming\npm\node_modules\protractor\node_modules\jasminewd2\index.js:86:14)
From asynchronous test:
Error
at Suite.<anonymous> (C:\Projekte\WifiWizardTestApp\tests\browse.spec.js:8:5)
at Object.<anonymous> (C:\Projekte\WifiWizardTestApp\tests\browse.spec.js:4:1)
at Module._compile (module.js:570:32)
at Object.Module._extensions..js (module.js:579:10)
at Module.load (module.js:487:32)
at tryModuleLoad (module.js:446:12)
2) Testing the browse state should be able to take an other screenshot
Message:
Failed: unknown error: unhandled inspector error: {"code":-32603,"message":"Unable to capture screenshot"}
(Session info: webview=30.0.0.0)
(Driver info: chromedriver=2.27.440174 (e97a722caafc2d3a8b807ee115bfb307f7d2cfd9),platform=Windows NT 10.0.10586 x86_64)
Stack:
WebDriverError: unknown error: unhandled inspector error: {"code":-32603,"message":"Unable to capture screenshot"}
(Session info: webview=30.0.0.0)
(Driver info: chromedriver=2.27.440174 (e97a722caafc2d3a8b807ee115bfb307f7d2cfd9),platform=Windows NT 10.0.10586 x86_64)
at WebDriverError (C:\Users\mkaiser\AppData\Roaming\npm\node_modules\protractor\node_modules\selenium-webdriver\lib\error.js:27:5)
at Object.checkLegacyResponse (C:\Users\mkaiser\AppData\Roaming\npm\node_modules\protractor\node_modules\selenium-webdriver\lib\error.js:505:15)
at parseHttpResponse (C:\Users\mkaiser\AppData\Roaming\npm\node_modules\protractor\node_modules\selenium-webdriver\lib\http.js:509:13)
at doSend.then.response (C:\Users\mkaiser\AppData\Roaming\npm\node_modules\protractor\node_modules\selenium-webdriver\lib\http.js:440:13)
at process._tickCallback (internal/process/next_tick.js:103:7)
From: Task: WebDriver.takeScreenshot()
at WebDriver.schedule (C:\Users\mkaiser\AppData\Roaming\npm\node_modules\protractor\node_modules\selenium-webdriver\lib\webdriver.js:816:17)
at WebDriver.takeScreenshot (C:\Users\mkaiser\AppData\Roaming\npm\node_modules\protractor\node_modules\selenium-webdriver\lib\webdriver.js:1092:17)
at ProtractorBrowser.to.(anonymous function) [as takeScreenshot] (C:\Users\mkaiser\AppData\Roaming\npm\node_modules\protractor\lib\browser.ts:94:25)
at Object.<anonymous> (C:\Projekte\WifiWizardTestApp\tests\browse.spec.js:26:17)
at C:\Users\mkaiser\AppData\Roaming\npm\node_modules\protractor\node_modules\jasminewd2\index.js:102:25
at new ManagedPromise (C:\Users\mkaiser\AppData\Roaming\npm\node_modules\protractor\node_modules\selenium-webdriver\lib\promise.js:1067:7)
at controlFlowExecute (C:\Users\mkaiser\AppData\Roaming\npm\node_modules\protractor\node_modules\jasminewd2\index.js:87:18)
at TaskQueue.execute_ (C:\Users\mkaiser\AppData\Roaming\npm\node_modules\protractor\node_modules\selenium-webdriver\lib\promise.js:2970:14)
at TaskQueue.executeNext_ (C:\Users\mkaiser\AppData\Roaming\npm\node_modules\protractor\node_modules\selenium-webdriver\lib\promise.js:2953:27)
at asyncRun (C:\Users\mkaiser\AppData\Roaming\npm\node_modules\protractor\node_modules\selenium-webdriver\lib\promise.js:2860:25)
From: Task: Run it("should be able to take an other screenshot") in control flow
at Object.<anonymous> (C:\Users\mkaiser\AppData\Roaming\npm\node_modules\protractor\node_modules\jasminewd2\index.js:86:14)
From asynchronous test:
Error
at Suite.<anonymous> (C:\Projekte\WifiWizardTestApp\tests\browse.spec.js:24:5)
at Object.<anonymous> (C:\Projekte\WifiWizardTestApp\tests\browse.spec.js:4:1)
at Module._compile (module.js:570:32)
at Object.Module._extensions..js (module.js:579:10)
at Module.load (module.js:487:32)
at tryModuleLoad (module.js:446:12)
2 specs, 2 failures
Finished in 2.258 seconds
[15:17:49] I/launcher - 0 instance(s) of WebDriver still running
[15:17:49] I/launcher - #01 failed 2 test(s)
[15:17:49] I/launcher - overall: 2 failed spec(s)
[15:17:49] E/launcher - Process exited with error code 1
wdBrowser.context('NATIVE_APP').then(() => {
browser.takeScreenshot().then(function (png) {
console.log('browser.takeScreenshot()');
var stream = fs.createWriteStream('screenshot.png');
stream.write(new Buffer(png, 'base64'));
stream.end(function(){
wdBrowser.context(<Your webview>).then(done);
});
})
});
Where wdBrowser is a global variable set by wdBridge. Should work - been having a similar issue (unable to take screenshot but no error message like you have)
You can grab your webview name/id from the appium logs.
这篇关于错误:无法捕获屏幕截图 - 使用Protractor和Appium的Android混合应用程序的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!