appium-flutter-driver 测试flutter_boost项目_Java语言
flutter_boost混合了原生代码和flutter代码,会涉及到flutter和原生界面的跳转。
使用IDEA创建项目:
然后finsh即可。
导入appium-flutter-driver代码
目前appium-flutter-driver还没有放到mvn repository上,所以,我这里是将appium-flutter-driver的kotlin代码拷贝到我的项目里了。
在pom.xml上添加依赖:
<!--添加依赖 --> <dependencies> <dependency> <groupId>io.appium</groupId> <artifactId>java-client</artifactId> <version>7.3.0</version> </dependency> <dependency> <groupId>org.seleniumhq.selenium</groupId> <artifactId>selenium-java</artifactId> <version>3.141.59</version> </dependency> <dependency> <groupId>org.jetbrains.kotlinx</groupId> <artifactId>kotlinx-serialization-runtime</artifactId> <version>0.20.0</version> </dependency> </dependencies>
编写测试代码:
import io.appium.java_client.MobileElement; import io.appium.java_client.android.AndroidDriver; import io.appium.java_client.service.local.AppiumDriverLocalService; import org.openqa.selenium.remote.DesiredCapabilities; import pro.truongsinh.appium_flutter.FlutterFinder; import pro.truongsinh.appium_flutter.finder.FlutterElement; import java.io.File; public class AppiumTestDemo { public static String appPtah = "/flutterboost-debug.apk"; public static void main(String[] args) { File rootFile = new File(""); System.out.println("测试app文件路径:" + rootFile.getAbsolutePath()); File appFile = new File(rootFile.getAbsolutePath() + appPtah); System.out.println("测试app文件路径:" + appFile.getAbsolutePath()); appPtah = appFile.getAbsolutePath(); AndroidDriver<MobileElement> driver = getFlutterDriver(); // 切换成本地的代码 driver.context("NATIVE_APP"); MobileElement openNativeWebElement = driver.findElementById("com.taobao.idlefish.flutterboostexample:id/open_flutter"); openNativeWebElement.click(); System.out.println("点击完成跳转至flutter页面完成"); // 切换成flutter端的代码 driver.context("FLUTTER"); FlutterFinder find = new FlutterFinder(driver); FlutterElement buttonFinder = find.byValueKey("openFirstPage"); buttonFinder.click(); System.out.println("openFirstPage页面完成"); try { Thread.sleep(50000); } catch (InterruptedException e) { e.printStackTrace(); } driver.quit(); } public static AndroidDriver<MobileElement> getFlutterDriver() { System.out.println("getFlutterDriver"); DesiredCapabilities flutterCapabilities = new DesiredCapabilities(); flutterCapabilities.setCapability("platformName", "Android"); flutterCapabilities.setCapability("deviceName", "one plus"); flutterCapabilities.setCapability("app", appPtah); flutterCapabilities.setCapability("platformVersion", "10"); flutterCapabilities.setCapability("noReset", true); flutterCapabilities.setCapability("automationName", "Flutter"); AppiumDriverLocalService service = AppiumDriverLocalService.buildDefaultService(); AndroidDriver<MobileElement> driver = new AndroidDriver<MobileElement>(service.getUrl(), flutterCapabilities); System.out.println("getFlutterDriver finish"); return driver; } }
代码已经上传到github上了:
https://github.com/hbolin/AppiumFlutterBoostTest
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 通过 API 将Deepseek响应流式内容输出到前端