Ranorex provides support for Flutter through specialized plug-in packages that enable automated testing of Flutter applications on Android and iOS platforms.
These plugins allow you to access platform-specific implementations and integrate Ranorex automation directly into your Flutter projects. For general Flutter development information, refer to the official Flutter documentation.
Ranorex offers two Flutter plugin packages:
- Ranorex_flutternative: For Android and general Flutter use
- Ranorex_ios: Specifically for iOS
Installation and Setup
To begin, you can install the plugin package based on your preferred technology.
Install the package
Install the package for Android and general Flutter
Run the following command to install the package:
$ flutter pub add ranorex_flutternativeThis adds the dependency to your pubspec.yaml:
ranorex_flutternative: ^0.1.3Alternatively, your editor may support flutter pub get automatically; check your IDE’s documentation.
Install the package for iOS
Run the following command to install the package:
$flutter pub add ranorex_iosThis adds the dependency to your pubspec.yaml:
ranorex_ios: ^1.0.3Update the iOS Podfile
Add the following pod command to the iOS app’s Podfile, inside the “do” section:
Pod 'RxAutomation', : path =>
'.symlinks/plugins/ranorex_flutternative_ios/RxAutomation'Import the package in your Dart code
Android and general Flutter imports
Add the required imports for ranorex_flutternative:
import 'package:flutter/material.dart';
import 'package:ranorex_flutternative/method_channel.dart';
import 'package:ranorex_flutternative/platform.dart';
import 'package:ranorex_flutternative/Ranorex_Flutternative.dart';
import 'package:ranorex_flutternative/command/command.dart';
import 'package:ranorex_flutternative/command/factory.dart';
import 'package:ranorex_flutternative/command/method/get_full_hierarchy.dart';
import 'package:ranorex_flutternative/command/method/get_properties.dart';
import 'package:ranorex_flutternative/command/method/get_screenshot.dart';
import 'package:ranorex_flutternative/command/method/replay_click.dart';
import 'package:ranorex_flutternative/command/method/replay_click_child.dart';
import 'package:ranorex_flutternative/command/method/replay_key_sequence.dart';
import 'package:ranorex_flutternative/command/method/replay_set_value.dart';
import 'package:ranorex_flutternative/command/method/replay_swipe.dart';
import 'package:ranorex_flutternative/command/method/replay_touch.dart';
import 'package:ranorex_flutternative/element/factory.dart';
import 'package:ranorex_flutternative/element/rx_element.dart';
import 'package:ranorex_flutternative/element/visitor.dart';
import 'package:ranorex_flutternative/element/strategy.dart';
import 'package:ranorex_flutternative/element/strategy/app_bar.dart';
import 'package:ranorex_flutternative/element/strategy/base.dart';
import 'package:ranorex_flutternative/element/strategy/button.dart';
import 'package:ranorex_flutternative/element/strategy/checkbox.dart';
import 'package:ranorex_flutternative/element/strategy/chip.dart';
import 'package:ranorex_flutternative/element/strategy/container.dart';
import 'package:ranorex_flutternative/element/strategy/date_time.dart';
import 'package:ranorex_flutternative/element/strategy/dropdown_button.dart';
import 'package:ranorex_flutternative/element/strategy/list_view.dart';
import 'package:ranorex_flutternative/element/strategy/picture.dart';
import 'package:ranorex_flutternative/element/strategy/progress_indicator_strategy.dart';
import 'package:ranorex_flutternative/element/strategy/radio_button.dart';
import 'package:ranorex_flutternative/element/strategy/scroll_view.dart';
import 'package:ranorex_flutternative/element/strategy/slider.dart';
import 'package:ranorex_flutternative/element/strategy/tabBar.dart';
import 'package:ranorex_flutternative/element/strategy/table.dart';
import 'package:ranorex_flutternative/element/strategy/text.dart';
import 'package:ranorex_flutternative/utility/associated_text_finder.dart';
import 'package:ranorex_flutternative/utility/distance.dart';
import 'package:ranorex_flutternative/utility/enums.dart';
import 'package:ranorex_flutternative/utility/gesture_movement.dart';
import 'package:ranorex_flutternative/utility/ime_action_mapper.dart';
import 'package:ranorex_flutternative/utility/in_memory_cache.dart';
import 'package:ranorex_flutternative/utility/resolve_coordinates.dart';
import 'package:ranorex_flutternative/utility/rnx_supported_class_name.dart';
import 'package:ranorex_flutternative/utility/set_slider_values.dart';
import 'package:ranorex_flutternative/utility/whitelisted_element.dart';iOS import
For iOS, add the following import:
import 'package:ranorex_ios/ranorex_flutternative_ios.dart';Initialize the plugin in your app
To initialize the Ranorex Flutter plugin, your app must use a StatefulWidget. If your app does not already use one, convert it before adding the initialization code.
Initialize the plugin in your state class.
For iOS, use RanorexIos.
For Android, use Ranorex_Flutternative instead of RanorexIos.
Example
class MyApp extends StatefulWidget {
const MyApp({super.key});
@override
State<StatefulWidget> createState() => _MyAppState();
}
class _MyAppState extends State<MyApp> {
final ranorexIos = RanorexIos();
@override
void initState() {
super.initState();
ranorexIos.getPlatformVersion();
}
// This widget is the root of your application.
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Flutter Demo',
theme: ThemeData(
colorScheme: ColorScheme.fromSeed(seedColor: Colors.deepPurple),
useMaterial3: true,
),
home: const MyHomePage(title: 'Flutter Demo Home Page'),
);
}
}