com.google.common.collect.Maps$TransformedEntriesMap нельзя преобразовать в org.openqa.selenium.WebElement

У меня есть следующий код:

import io.appium.java_client.AppiumDriver;
import io.appium.java_client.MobileElement;
import io.appium.java_client.TouchAction;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.remote.DesiredCapabilities;
import io.appium.java_client.android.AndroidDriver;
import java.net.URL;
import java.util.concurrent.TimeUnit;

public class SampleSauceCheckBoxTest {

    public static final String URL = "http://127.0.0.1:4723/wd/hub";
    public static AndroidDriver driver = null;

    public static void main(String[] args) throws Exception {

        DesiredCapabilities capabilities = new DesiredCapabilities();
        capabilities.setCapability("platformName", "Android");
        capabilities.setCapability("platformVersion", "6.0");
        capabilities.setCapability("deviceName", "Android Emulator");
        capabilities.setCapability("app", "\\Users\\jsun\\Downloads\\app-debug.apk");

        driver = new AndroidDriver<>(new URL(URL), capabilities);

        /**
         * Test Actions here...
         */
        driver.manage().timeouts().implicitlyWait(60, TimeUnit.SECONDS);

        MobileElement mbeLogin = (MobileElement)driver.findElementByXPath("//android.widget.Button[@content-desc='Log In']");
        mbeLogin.click();

        //driver.quit();
    }

}

Вот результат:

Процесс завершен с кодом выхода 1

Раньше код работал нормально, так что это не проблема совместимости версий appium/selenium.

Из журналов я понимаю, что вам нужно использовать универсальный AndroidDriver с типом MobileElement. Итак, в вашем коде измените следующую строку:


person Jeremy Sun    schedule 21.11.2018    source источник
comment
Какую версию сервера Appium, клиента Java и селена вы используете? Убедитесь, что вы используете последнюю стабильную версию всех.   -  person e_i_pi    schedule 22.11.2018


Ответы (1)


Также удалите приведение к MobileElement, сделанное при поиске элемента.

AndroidDriver <MobileElement> driver = null;

Изменить: также убедитесь, что вы используете последнюю версию клиента Appium Java и Selenium.

Поместите вывод ошибки в блок кавычек для удобочитаемости

person Wasiq Bhamla    schedule 23.11.2018
comment
Selenium и Appium используют 3.4. И Selenium Java также использует 3.4. - person Wasiq Bhamla; 23.11.2018
comment
Теперь это работает. Я изменил версии Selenium и Selenium Java на 3.14. И Appium до 6.1 - person Jeremy Sun; 23.11.2018
comment
C:\dev\java\jdk1.8.0_181\bin\java.exe "-javaagent:C:\Program Files\JetBrains\IntelliJ IDEA Community Edition 2018.2.4\lib\idea_rt.jar=57587:C:\Program Files \JetBrains\IntelliJ IDEA Community Edition 2018.2.4\bin" -Dfile.encoding=UTF-8 -classpath C:\dev\java\jdk1.8.0_181\jre\lib\charsets.jar;C:\dev\java\ jdk1.8.0_181\jre\lib\deploy.jar;C:\dev\java\jdk1.8.0_181\jre\lib\ext\access-bridge-64.jar;C:\dev\java\jdk1.8.0_181 \jre\lib\ext\cldrdata.jar;C:\dev\java\jdk1.8.0_181\jre\lib\ext\dnsns.jar;C:\dev\java\jdk1.8.0_181\jre\lib\ext \jaccess.jar;C:\dev\java\jdk1.8.0_181\jre\lib\ext\jfxrt.jar;C:\dev\java\jdk1.8.0_181\jre\lib\ext\localedata.jar;C :\dev\java\jdk1.8.0_181\jre\lib\ext\nashorn.jar;C:\dev\java\jdk1.8.0_181\jre\lib\ext\sunec.jar;C:\dev\java\ jdk1.8.0_181\jre\lib\ext\sunjce_provider.jar;C:\dev\java\jdk1.8.0_181\jre\lib\ext\sunmscapi.jar;C:\dev\java\jdk1.8.0_181\jre \lib\ext\sunpkcs11.jar;C:\dev\java\jdk1.8.0_181\jre\lib\ext\zipfs.jar;C:\dev\java\jdk1.8.0_181\jre\lib\javaws.jar ;C:\dev\ja va\jdk1.8.0_181\jre\lib\jce.jar;C:\dev\java\jdk1.8.0_181\jre\lib\jfr.jar;C:\dev\java\jdk1.8.0_181\jre\lib \jfxswt.jar;C:\dev\java\jdk1.8.0_181\jre\lib\jsse.jar;C:\dev\java\jdk1.8.0_181\jre\lib\management-agent.jar;C:\ dev\java\jdk1.8.0_181\jre\lib\plugin.jar;C:\dev\java\jdk1.8.0_181\jre\lib\resources.jar;C:\dev\java\jdk1.8.0_181\jre \lib\rt.jar;C:\work\SauceLabsTest\out\production\SauceLabsTest;C:\work\SauceLabsTest\lib\refined\java-client-3.4.0.jar;C:\work\SauceLabsTest\lib\ уточненный\selenium-server-standalone-3.4.0.jar SampleSauceCheckBoxTest 21 ноября 2018 г. 14:40:07 org.openqa.selenium.remote.ProtocolHandshake createSession INFO: обнаружен диалект: исключение W3C в потоке «основной» org.openqa. selenium.WebDriverException: возвращаемое значение не может быть преобразовано в WebElement: {element-6066-11e4-a52e-4f735466cecf=1} Информация о сборке: версия: «3.4.0», ревизия: «неизвестно», время: «неизвестно» Информация о системе: хост: «L5480X2M2S5M2», ip: «10.166.43.162», os.name: «Windows 10», os.arch: «amd64», os.ve rsion: '10.0', java.version: '1.8.0_181' Информация о драйвере: driver.version: AndroidDriver на org.openqa.selenium.remote.RemoteWebDriver.findElement(RemoteWebDriver.java:417) на org.openqa.selenium.remote .RemoteWebDriver.findElementByXPath(RemoteWebDriver.java:509) в io.appium.java_client.DefaultGenericMobileDriver.findElementByXPath(DefaultGenericMobileDriver.java:132) в io.appium.java_client.AppiumDriver.findElementByXPath(AppiumDriver.java:1) в io.appium. java_client.android. AndroidDriver.findElementByXPath(AndroidDriver.java:1) в SampleSauceCheckBoxTest.main(SampleSauceCheckBoxTest.java:34) Причина: java.lang.ClassCastException: com.google.common.collect.Maps$TransformedEntriesMap нельзя преобразовать в org.openqa.selenium .WebElement на org.openqa.selenium.remote.RemoteWebDriver.findElement(RemoteWebDriver.java:415) ... еще 5 - person Jeremy Sun; 23.11.2018