Fix #184 Fix #211 by TikhomirovSergey · Pull Request #213 · appium/java-client
Change list:
- fixed @AndroidFindBy and @iOSFindBy for native app automation #184 and iOSFindBy & AndroidFindBy annotations are ignored #211. Now the choosing is by-strategy is depending on only driver class. There was outdated code. Now it is updated. Summary:
So when here is AnroidDriver and current context is native app then will be choosen By-strategy defined via AndroidFindBy/AndroidFindBys/AndroidFindAll annotations. When here is IOSDriver and current context is native app then will be choosen By-strategy defined via iOSFindBy/iOSFindBys/iOSFindAll. annotations.
By-strategy that is built using defaul FindBy/FindBys/FindAll will be used for browser/webview content or when there is no specific annotations for Android/iOS native apps.
There is one specific remark. If somebody desires to use their own Webdriver implementation then it has to implement HasCapabilities.
- AutomationName has been added in order to define the desired automation type correctly in Capabilities.
- Now the class ContentMappedBy has overridden toString() method
- I fixed a problem that is not reported yet.
How to reproduce:
//Right now we are testing an Android app @iOSFindBy(iOS locator) @FindBy(css = "e.e1.e2") private e;
or
//Right now we are testing an iOS app @AndroidFindBy(className = "android.widget.TextView") @FindBy(css = "e.e1.e2") private WebElement e;
At these cases By-locator defined via FindBy is used. If we are testing a native app the test is failed because of UnsupportedCommandException. CSS and link text are not supported by automation tools.
So now NoSuchElementException will be thrown an this case insted of UnsupportedCommandException. This minor bug here since 1.7.0 version.