zoukankan      html  css  js  c++  java
  • appium-flutter-driver 测试flutter项目

    1.安装Appium:

    安装就按照官网的就可以了:

    http://appium.io/docs/en/about-appium/getting-started/?lang=zh

    2.安装appium-flutter-driver:

    npm i -g appium-flutter-driver

    如果后面会提示找不到  appium-flutter-finder  ,那就在运行:

    npm i -g appium-flutter-finder

    git地址:https://github.com/truongsinh/appium-flutter-driver 

    3.测试

    环境搭建完毕,就可以开始测试了:

    注意:被测试的flutter的app需要是debug或者是profiling包,不可以是realease包。

    step1:在pubspec.yaml文件中,新增

    dev_dependencies:
      flutter_test:
        sdk: flutter
    
      test: any
      flutter_driver:
        sdk: flutter

    step2:在runApp()前追加  enableFlutterDriverExtension(); 

    void main() {
      enableFlutterDriverExtension();
      runApp(MyApp());
    }

    step3:编写最简单的测试脚本:

    // import * as wdio from 'webdriverio';
    // import * as assert from 'assert';
    const wdio = require('webdriverio');
    const assert = require('assert');
    const find = require('appium-flutter-finder');
    
    
    const opts = {
      port: 4723,
      capabilities: {
        platformName: "Android",
        platformVersion: "10",
        deviceName: "one plus",
        app: "D:/Tests/Appium/flutter_test_demo.apk",
        automationName: "Flutter"
      }
    };
    
    (async () => {
    
      // byValueKey是flutter driver的api,用于通过key来查找Widgets,key只能是String或者是int
      const buttonFinder = find.byValueKey('FloatingActionButton');
    
      // 加载测试的配置
      const driver = await wdio.remote(opts);
      
      // 点击按钮
      await driver.elementClick(buttonFinder);
    })();

    测试结果很明显:自动加1了呗。

    注意: automationName: "Flutter" 这代码一定要加上,不然会报各种 not implement.

    更多的测试案例,可以参考:

    https://github.com/truongsinh/appium-flutter-driver/blob/master/example/nodejs/src/index.js

    附上flutter代码:

    import 'package:flutter/material.dart';
    import 'package:flutter_driver/driver_extension.dart';
    
    void main() {
      enableFlutterDriverExtension();
      runApp(MyApp());
    }
    
    class MyApp extends StatelessWidget {
      @override
      Widget build(BuildContext context) {
        return MaterialApp(
          title: 'Flutter Demo',
          theme: ThemeData(
            primarySwatch: Colors.blue,
          ),
          home: MyHomePage(title: 'Flutter Demo Home Page'),
        );
      }
    }
    
    class MyHomePage extends StatefulWidget {
      MyHomePage({Key key, this.title}) : super(key: key);
    
      final String title;
    
      @override
      _MyHomePageState createState() => _MyHomePageState();
    }
    
    class _MyHomePageState extends State<MyHomePage> {
      int _counter = 0;
    
      void _incrementCounter() {
        setState(() {
          _counter++;
        });
      }
    
      @override
      Widget build(BuildContext context) {
        return Scaffold(
          appBar: AppBar(
            title: Text(widget.title),
          ),
          body: Center(
            child: Column(
              mainAxisAlignment: MainAxisAlignment.center,
              children: <Widget>[
                Text(
                  'You have pushed the button this many times:',
                ),
                Text(
                  '$_counter',
                  style: Theme.of(context).textTheme.display1,
                ),
              ],
            ),
          ),
          floatingActionButton: FloatingActionButton(
            key: Key('FloatingActionButton'),
            onPressed: _incrementCounter,
            tooltip: 'Increment',
            child: Icon(Icons.add),
          ),
        );
      }
    }

    原理:

    Appium Flutter driver is a cross-platform test automation tool for flutter applications. It is a part of the automation tool for the Appium mobile test. But how does the driver for Appium Flutter work? To instantiate the flutter engine, it uses WebSocket communication to hold the WDIO script, and the request will be sent to the particular application. The AUT will then submit the script response via the Appium Flutter driver.

    pasted image 0 (2)

     来自:https://www.fleekitsolutions.com/automating-flutter-app-appium-flutter-driver/

    简单的说,其实真正在测试的是flutter driver,就是flutter的测试工具,appium-flutter-driver类似于转发器,把脚本命令发给flutter driver去测试。

    That is all.

  • 相关阅读:
    Unbuntu--安装VMware Tools
    方法引用的基本使用
    Stream流
    Stream流的常用方法
    枚举
    编程式路由导航
    向路由组件传递数据
    缓存路由组件
    嵌套路由
    基本路由
  • 原文地址:https://www.cnblogs.com/hbolin/p/12504361.html
Copyright © 2011-2022 走看看