[英]How to execute flutter terminal commands in dart code
我想自動化我的項目的測試。 我需要截圖並與其他截圖進行比較。 Flutter 命令將截取屏幕截圖並將其保存到我的目錄。 所以我想在 dart 而不是終端中執行該命令。
我在截屏時遇到了問題,已經使用了一些包,如截圖等。將無法正常工作。
PS D:\flut-237-screenshot\flutter-charts\flutter_charts\flutter_charts_testbed> flutter screenshot 屏幕截圖寫入flutter_02.png (2797kB)。
我希望這個命令應該使用 dart 代碼而不是在終端中運行
有一個名為process_run
的 package 允許您從dart
代碼調用終端命令。 Here is the link for the package: https://pub.dev/packages/process_run For example, if you want to execute the command that tells you your dart version, you can use the package in the following way:
await run('dart', ['--version'], verbose: true);
Dart 的 io package 具有Process.run
命令,允許您從 Dart 運行終端命令:
在您截取應用程序屏幕截圖的情況下,您將執行以下操作:
import 'dart:io';
await Process.run('flutter', ['screenshot', '-o', 'image.jpg']);
如果您想通過設置集成測試更直接地生成屏幕截圖,這比通過終端命令調用flutter screenshot
要快得多,這里有一些有用的參考資料,解釋了如何通過 Flutter 的集成測試框架獲取應用程序快照:
https://medium.com/flutter-community/testing-flutter-ui-with-flutter-driver-c1583681e337
https://blog.codemagic.io/flutter-automated-screenshot-testing/
https://dev.to/mjablecnik/take-screenshot-during-flutter-integration-tests-435k
https://medium.com/@nocnoc/automated-screenshots-for-flutter-f78be70cd5fd
但是,以這種方式截取屏幕截圖的局限性在於,只會捕獲應用程序的 UI,不會捕獲應用程序之外的其他內容(例如本地和推送通知、基於操作系統時鍾、日歷的提醒警報等,您的應用程序可能會生成。)
另一方面,使用Process.run
執行flutter screenshot
將能夠捕捉到手機顯示屏上的所有內容,包括通知、基於系統的警報等。不過,正確的時間安排可能有點棘手,因為它需要花費大量時間終端命令完整捕獲並保存屏幕截圖的時間更長。 您仍然希望在集成測試驅動程序的上下文中執行此操作,以避免系統權限問題。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.