【问题标题】:How to execute flutter terminal commands in dart code如何在飞镖代码中执行颤振终端命令
【发布时间】:2019-09-20 21:53:14
【问题描述】:

我想为我的项目自动化测试。我需要截图并与其他截图进行比较。 Flutter 命令将截取屏幕截图并将其保存到我的目录中。所以我想在飞镖而不是终端中执行该命令。

我在截屏时遇到问题已经使用了一些包,如截图等。将无法正常工作。

PS D:\flut-237-screenshot\flutter-charts\flutter_charts\flutter_charts_testbed> 颤振截图 屏幕截图写入 flutter_02.png (2797kB)。

我希望这个命令应该使用 dart 代码而不是在终端中运行

【问题讨论】:

  • 你能显示一些代码吗?什么是颤振终端?是process吗?您的意思是从终端获取数据吗?您可能需要添加Windows 标签或在帖子中提到,您显示了powershell 和Windows 的路径。
  • 是的@Tokenyet,我想在我的 dart 项目中单击按钮运行这个 Windows 终端命令“flutter screenshot”。有可能吗?

标签: flutter command


【解决方案1】:

有一个名为process_run 的包允许您从dart 代码调用终端命令。 这是包的链接:https://pub.dev/packages/process_run 例如,如果你想执行告诉你 dart 版本的命令,你可以通过以下方式使用包:

await run('dart', ['--version'], verbose: true);

【讨论】:

    【解决方案2】:

    Dart 的 io 包有 Process.run 命令,允许您从 Dart 运行终端命令:

    Process.run

    在您为应用截屏的情况下,您会执行以下操作:

    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 将能够捕获手机显示屏上的所有内容,包括通知、基于系统的警报等。不过,要把握好时机可能有点棘手,因为终端命令需要更长的时间才能完全捕获并保存屏幕截图。您仍然希望在集成测试驱动程序的上下文中执行此操作,以避免系统权限问题。

    【讨论】:

      猜你喜欢
      • 2019-06-26
      • 1970-01-01
      • 2020-08-12
      • 2020-11-05
      • 2020-11-28
      • 2018-09-10
      • 1970-01-01
      • 1970-01-01
      • 2022-08-19
      相关资源
      最近更新 更多