appium-flutter-driver icon indicating copy to clipboard operation
appium-flutter-driver copied to clipboard

Properly import appium-flutter-driven on Kotlin Appium automation

Open ichanmrg opened this issue 4 years ago • 0 comments

Hi —

I would like to ask for some professional help.

I am try to create an Appium script that will utilize the appium-flutter-driver import but I am not sure if I am importing it properly in my Kotlin scripts. I placed the pro.truongsinh.appium_flutter inside my common folder. I am calling the FlutterFinder in script but I am not able to run it due to these errors.

Screen Shot 2021-09-16 at 4 49 15 PM

Any idea on how to fix this?

Screen Shot 2021-09-16 at 4 47 27 PM

EDIT # 1: It seems that the errors for seen on the serializer.kt

e: /Users/ichanmrg/Library/Mobile Documents/com~apple~CloudDocs/Documents/Documents - Christian’s MacBook Pro/SourcePad/SPLabs/Github/SPLabs-Android/src/test/kotlin/appium_flutter_driver/finder/serializer.kt: (10, 12): None of the following functions can be called with the arguments supplied: protected constructor Json(configuration: JsonConfiguration, serializersModule: SerializersModule) defined in kotlinx.serialization.json.Json public fun Json(from: Json = ..., builderAction: JsonBuilder.() -> Unit): Json defined in kotlinx.serialization.json e: /Users/ichanmrg/Library/Mobile Documents/com~apple~CloudDocs/Documents/Documents - Christian’s MacBook Pro/SourcePad/SPLabs/Github/SPLabs-Android/src/test/kotlin/appium_flutter_driver/finder/serializer.kt: (10, 35): Unresolved reference: Stable e: /Users/ichanmrg/Library/Mobile Documents/com~apple~CloudDocs/Documents/Documents - Christian’s MacBook Pro/SourcePad/SPLabs/Github/SPLabs-Android/src/test/kotlin/appium_flutter_driver/finder/serializer.kt: (18, 20): Cannot access '<init>': it is internal in 'JsonLiteral' e: /Users/ichanmrg/Library/Mobile Documents/com~apple~CloudDocs/Documents/Documents - Christian’s MacBook Pro/SourcePad/SPLabs/Github/SPLabs-Android/src/test/kotlin/appium_flutter_driver/finder/serializer.kt: (18, 37): No value passed for parameter 'isString' e: /Users/ichanmrg/Library/Mobile Documents/com~apple~CloudDocs/Documents/Documents - Christian’s MacBook Pro/SourcePad/SPLabs/Github/SPLabs-Android/src/test/kotlin/appium_flutter_driver/finder/serializer.kt: (19, 20): Cannot access '<init>': it is internal in 'JsonLiteral' e: /Users/ichanmrg/Library/Mobile Documents/com~apple~CloudDocs/Documents/Documents - Christian’s MacBook Pro/SourcePad/SPLabs/Github/SPLabs-Android/src/test/kotlin/appium_flutter_driver/finder/serializer.kt: (19, 37): No value passed for parameter 'isString' e: /Users/ichanmrg/Library/Mobile Documents/com~apple~CloudDocs/Documents/Documents - Christian’s MacBook Pro/SourcePad/SPLabs/Github/SPLabs-Android/src/test/kotlin/appium_flutter_driver/finder/serializer.kt: (20, 21): Cannot access '<init>': it is internal in 'JsonLiteral' e: /Users/ichanmrg/Library/Mobile Documents/com~apple~CloudDocs/Documents/Documents - Christian’s MacBook Pro/SourcePad/SPLabs/Github/SPLabs-Android/src/test/kotlin/appium_flutter_driver/finder/serializer.kt: (20, 38): No value passed for parameter 'isString' e: /Users/ichanmrg/Library/Mobile Documents/com~apple~CloudDocs/Documents/Documents - Christian’s MacBook Pro/SourcePad/SPLabs/Github/SPLabs-Android/src/test/kotlin/appium_flutter_driver/finder/serializer.kt: (26, 20): An annotation argument must be a compile-time constant e: /Users/ichanmrg/Library/Mobile Documents/com~apple~CloudDocs/Documents/Documents - Christian’s MacBook Pro/SourcePad/SPLabs/Github/SPLabs-Android/src/test/kotlin/appium_flutter_driver/finder/serializer.kt: (26, 42): Unresolved reference: ImplicitReflectionSerializer

EDIT#2: I edited the code for serializer.kt but I am still having errors:

Edited code:

`@file:JvmName("_FinderRawMethods") @file:JvmMultifileClass package appium_flutter_driver.finder

import java.util.Base64

import kotlinx.serialization.* import kotlinx.serialization.json.*

val json = Json val base64encoder = Base64.getUrlEncoder().withoutPadding() val base64decoder = Base64.getUrlDecoder()

fun serialize(o: Map<String, *>): String { val jsonObject = o.map { val value = it.value val jsonO = when (value) { is String -> JsonPrimitive(value) is Number -> JsonPrimitive(value) is Boolean -> JsonPrimitive(value) is JsonElement -> value else -> JsonNull } Pair(it.key, jsonO) }.toMap() //@UseExperimental(kotlinx.serialization.ImplicitReflectionSerializer::class) val jsonStringified = json.encodeToString(jsonObject) val base64Encoded = base64encoder.encodeToString(jsonStringified.toByteArray()) return base64Encoded }

fun deserialize(base64Encoded: String): Map<String, *> { val base64Decoded = String(base64decoder.decode(base64Encoded)) val jsonObject = json.parseToJsonElement(base64Decoded) as JsonObject return jsonObject.toMap() }`

ERR:

'void kotlinx.serialization.modules.SerialModuleImpl.<init>(java.util.Map, java.util.Map, java.util.Map, java.util.Map)' java.lang.NoSuchMethodError: 'void kotlinx.serialization.modules.SerialModuleImpl.<init>(java.util.Map, java.util.Map, java.util.Map, java.util.Map)' at kotlinx.serialization.modules.SerializersModuleKt.<clinit>(SerializersModule.kt:74) at kotlinx.serialization.json.Json$Default.<init>(Json.kt:70) at kotlinx.serialization.json.Json$Default.<init>(Json.kt) at kotlinx.serialization.json.Json.<clinit>(Json.kt) at appium_flutter_driver.finder._FinderRawMethods__SerializerKt.<clinit>(serializer.kt:10) at appium_flutter_driver.finder._FinderRawMethods.serialize(Unknown Source) at appium_flutter_driver.finder.FlutterElement.<init>(FlutterElement.kt:9) at appium_flutter_driver.finder._FinderRawMethods__ByValueKeyKt.byValueKey(byValueKey.kt:6) at appium_flutter_driver.finder._FinderRawMethods.byValueKey(Unknown Source) at appium_flutter_driver.FlutterFinder.byValueKey(FlutterFinder.kt:60) at pages.LoginPage.loginUsingEmail(LoginPage.kt:54) at tests.smoke.Login.loginUsingValidEmail(Login.kt:25) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:64) at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.base/java.lang.reflect.Method.invoke(Method.java:564) at org.junit.platform.commons.util.ReflectionUtils.invokeMethod(ReflectionUtils.java:725) at org.junit.jupiter.engine.execution.MethodInvocation.proceed(MethodInvocation.java:60) at org.junit.jupiter.engine.execution.InvocationInterceptorChain$ValidatingInvocation.proceed(InvocationInterceptorChain.java:131) at org.junit.jupiter.engine.extension.TimeoutExtension.intercept(TimeoutExtension.java:149) at org.junit.jupiter.engine.extension.TimeoutExtension.interceptTestableMethod(TimeoutExtension.java:140) at org.junit.jupiter.engine.extension.TimeoutExtension.interceptTestMethod(TimeoutExtension.java:84) at org.junit.jupiter.engine.execution.ExecutableInvoker$ReflectiveInterceptorCall.lambda$ofVoidMethod$0(ExecutableInvoker.java:115) at org.junit.jupiter.engine.execution.ExecutableInvoker.lambda$invoke$0(ExecutableInvoker.java:105) at org.junit.jupiter.engine.execution.InvocationInterceptorChain$InterceptedInvocation.proceed(InvocationInterceptorChain.java:106) at org.junit.jupiter.engine.execution.InvocationInterceptorChain.proceed(InvocationInterceptorChain.java:64) at org.junit.jupiter.engine.execution.InvocationInterceptorChain.chainAndInvoke(InvocationInterceptorChain.java:45) at org.junit.jupiter.engine.execution.InvocationInterceptorChain.invoke(InvocationInterceptorChain.java:37) at org.junit.jupiter.engine.execution.ExecutableInvoker.invoke(ExecutableInvoker.java:104) at org.junit.jupiter.engine.execution.ExecutableInvoker.invoke(ExecutableInvoker.java:98) at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.lambda$invokeTestMethod$7(TestMethodTestDescriptor.java:214) at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73) at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.invokeTestMethod(TestMethodTestDescriptor.java:210) at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:135) at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:66) at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$6(NodeTestTask.java:151) at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73) at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:141) at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137) at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$9(NodeTestTask.java:139) at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73) at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:138) at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:95) at java.base/java.util.ArrayList.forEach(ArrayList.java:1511) at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:41) at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$6(NodeTestTask.java:155) at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73) at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:141) at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137) at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$9(NodeTestTask.java:139) at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73) at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:138) at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:95) at java.base/java.util.ArrayList.forEach(ArrayList.java:1511) at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:41) at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$6(NodeTestTask.java:155) at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73) at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:141) at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137) at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$9(NodeTestTask.java:139) at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73) at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:138) at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:95) at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.submit(SameThreadHierarchicalTestExecutorService.java:35) at org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor.execute(HierarchicalTestExecutor.java:57) at org.junit.platform.engine.support.hierarchical.HierarchicalTestEngine.execute(HierarchicalTestEngine.java:54) at org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:107) at org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:88) at org.junit.platform.launcher.core.EngineExecutionOrchestrator.lambda$execute$0(EngineExecutionOrchestrator.java:54) at org.junit.platform.launcher.core.EngineExecutionOrchestrator.withInterceptedStreams(EngineExecutionOrchestrator.java:67) at org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:52) at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:114) at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:86) at org.junit.platform.launcher.core.DefaultLauncherSession$DelegatingLauncher.execute(DefaultLauncherSession.java:86) at org.junit.platform.launcher.core.SessionPerRequestLauncher.execute(SessionPerRequestLauncher.java:53) at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor$CollectAllTestClassesExecutor.processAllTestClasses(JUnitPlatformTestClassProcessor.java:99) at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor$CollectAllTestClassesExecutor.access$000(JUnitPlatformTestClassProcessor.java:79) at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor.stop(JUnitPlatformTestClassProcessor.java:75) at org.gradle.api.internal.tasks.testing.SuiteTestClassProcessor.stop(SuiteTestClassProcessor.java:61) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:64) at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.base/java.lang.reflect.Method.invoke(Method.java:564) at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:36) at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24) at org.gradle.internal.dispatch.ContextClassLoaderDispatch.dispatch(ContextClassLoaderDispatch.java:33) at org.gradle.internal.dispatch.ProxyDispatchAdapter$DispatchingInvocationHandler.invoke(ProxyDispatchAdapter.java:94) at com.sun.proxy.$Proxy2.stop(Unknown Source) at org.gradle.api.internal.tasks.testing.worker.TestWorker.stop(TestWorker.java:135) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:64) at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.base/java.lang.reflect.Method.invoke(Method.java:564) at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:36) at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24) at org.gradle.internal.remote.internal.hub.MessageHubBackedObjectConnection$DispatchWrapper.dispatch(MessageHubBackedObjectConnection.java:182) at org.gradle.internal.remote.internal.hub.MessageHubBackedObjectConnection$DispatchWrapper.dispatch(MessageHubBackedObjectConnection.java:164) at org.gradle.internal.remote.internal.hub.MessageHub$Handler.run(MessageHub.java:414) at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:64) at org.gradle.internal.concurrent.ManagedExecutorImpl$1.run(ManagedExecutorImpl.java:48) at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1130) at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:630) at org.gradle.internal.concurrent.ThreadFactoryImpl$ManagedThreadRunnable.run(ThreadFactoryImpl.java:56) at java.base/java.lang.Thread.run(Thread.java:832)

ichanmrg avatar Sep 16 '21 08:09 ichanmrg