簡體   English   中英

如何在 dart 代碼中執行 flutter 終端命令

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM