Настройка драйвера Android для возврата MobileElement
из его вызовов findElement
не является ошибкой (см. Класс Javadoc AndroidDriver
в Appium Github ), поэтому мы можем исключить это как проблему.
/**
* Android driver implementation.
*
* @param <T> the required type of class which implement {@link org.openqa.selenium.WebElement}.
* Instances of the defined type will be returned via findElement* and findElements*.
* Warning (!!!). Allowed types:
* {@link org.openqa.selenium.WebElement}
* {@link org.openqa.selenium.remote.RemoteWebElement}
* {@link io.appium.java_client.MobileElement}
* {@link io.appium.java_client.android.AndroidElement}
*/
public class AndroidDriver<T extends WebElement>
Но ваша проблема в том, что универсальный тип не должен помещаться в вызов конструктора / при вызове new AndroidDriver
.См. line 34 и line 54 из BaseAndroidTest
на Appium's Github, например, для использования.
public class BaseAndroidTest {
// ...
protected static AndroidDriver<AndroidElement> driver;
@BeforeClass public static void beforeClass() {
// ...
driver = new AndroidDriver<>(service.getUrl(), capabilities);
}
Таким образом, чтобы исправить вашу проблему, просто удалите MobileElement
из конструктора new AndroidDriver
, но оставьте его в объявлении:
//Instantiate Appium Driver
AndroidDriver<MobileElement> driver;
try {
driver = new AndroidDriver<>(new URL("http://0.0.0.0:4723/wd/hub"), caps);
} catch (MalformedURLException e) {
System.out.println(e.getMessage());
}
Ваш драйвер должен быть создан.