serenity-bdd / serenity-core

Serenity BDD is a test automation library designed to make writing automated acceptance tests easier, and more fun.
http://serenity-bdd.info
Other
720 stars 519 forks source link

@AndroidBy is not working with appium customdriver #1255

Closed mohanrajmcad closed 2 years ago

mohanrajmcad commented 6 years ago

Appium script flow is working fine if i provide webdriver.driver= appium in serenity properties file. However it is failing if I configure appium as customdriver with provided option. Any idea about this error?

Serenity Version : 1.9.0

[main] WARN net.thucydides.core.pages.Pages - Failed to instantiate page of type class com.cucumber.app.zpages.android__login_pages ({}) java.lang.IllegalArgumentException: Can not set net.serenitybdd.core.pages.WebElementFacade field com.cucumber.app.zpages.android__login_pages.btn_already_have_a_account to io.appium.java_client.android.AndroidElement$$EnhancerByCGLIB$$b598166c   at sun.reflect.UnsafeFieldAccessorImpl.throwSetIllegalArgumentException(UnsafeFieldAccessorImpl.java:167)   at sun.reflect.UnsafeFieldAccessorImpl.throwSetIllegalArgumentException(UnsafeFieldAccessorImpl.java:171)   at sun.reflect.UnsafeObjectFieldAccessorImpl.set(UnsafeObjectFieldAccessorImpl.java:81)   at java.lang.reflect.Field.set(Field.java:764)

wakaleo commented 6 years ago

If you use a custom driver, you need to manage a lot of things that Serenity would normally do yourself. Why do you need a custom driver?

mohanrajmcad commented 6 years ago

@wakaleo,

Custom driver helps me to parametrize appium properties programmatically based in connected devices like passing udid at run time so that I can connect any device without changing the properties. Moreover below values can be parametrized based on available ports at runtime that helps to execute scripts in local machine parallelly with multiple devices.

webkitDebugProxyPort wdaLocalPort chromeDriverPort systemPort webkitDebugProxyPort