Код Appium не работает после обновления java-клиента и версии selenium - PullRequest
0 голосов
/ 08 сентября 2018

У меня есть кусок кода, который прекрасно работает с Java-клиентом (5.0.0-BETA6) и селен-Java версии 3.3.1. Но когда я обновился до версии 6.1.0 java-клиента и версии 3.14.0 selenium-java, код начал выдавать ошибки. Нужна помощь в устранении проблемы.

     AndroidDriver<AndroidElement> driver=Base.capabilities();
     driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
     TouchAction t=new TouchAction(driver);
     driver.findElementByXPath("//android.widget.TextView[@text='Views']").click();
     driver.findElementByXPath("//android.widget.TextView[@text='Date Widgets']").click();
     driver.findElementByAndroidUIAutomator("text(\"2. Inline\")").click();
     driver.findElementByXPath("//*[@content-desc='9']").click();

     t.press(driver.findElementByXPath("//*[@content-desc='15']")).waitAction(2000).moveTo(driver.findElementByXPath("//*[@content-desc='45']")).release().perform();

Я получаю ошибку - 1. TouchAction является необработанным типом. Ссылки на универсальный тип TouchAction должны быть параметризованы » 2. Метод нажатия (PointOption) в типе TouchAction не применим для аргументов (AndroidElement)

Любая помощь в решении этой проблемы будет оценена. Спасибо.

Код, который наконец работал для меня с новой версией, упомянут ниже. Пришлось внести немало изменений.

AndroidDriver<AndroidElement> driver = BaseNew.capabilities();
    driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);    
    TouchAction t = new TouchAction(driver);
    driver.findElementByXPath("//android.widget.TextView[@text='Views']").click();
    driver.findElementByXPath("//android.widget.TextView[@text='Date Widgets']").click();
    driver.findElementByAndroidUIAutomator("text(\"2. Inline\")").click();
    driver.findElementByXPath("//*[@content-desc='9']").click();

    t.press(ElementOption.element(driver.findElementByXPath("//*[@content-desc='15']")))
            .waitAction(WaitOptions.waitOptions(Duration.ofSeconds(3)))
            .moveTo(ElementOption.element(driver.findElementByXPath("//*[@content-desc='45']"))).release()
            .perform();

1 Ответ

0 голосов
/ 09 сентября 2018

С Appium java_client v6.0.0-BETA1 разные Options представлены как

  1. ElementOption (для прохождения элемента)
  2. PointOption (для передачи координат)
  3. WaitOptions (чтобы пройти время ожидания)

Старые методы класса TouchActions устарели . Вы можете просмотреть журнал изменений здесь

import static io.appium.java_client.touch.WaitOptions.waitOptions;
import static io.appium.java_client.touch.offset.ElementOption.element;
import static io.appium.java_client.touch.offset.PointOption.point;

  // Element Usage  
    new TouchAction(driver)
            .press(element(driver.findElementById("some_element_id")))
            .waitAction(waitOptions(ofSeconds(1)))
            .release()
            .perform();

     // Coordinate usage
        Point point =
            driver.findElementById("some_element_id_to_get_coordinate").getLocation();

    new TouchAction(driver)
            .press(point(point.x + 120, point.y + 130))
            .waitAction(waitOptions(ofSeconds(1))) // here ofSeconds is a java time Duration
            .release()
            .perform();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...