【问题标题】:Appium code not working after updating java-client and selenium version更新 java-client 和 selenium 版本后,Appium 代码不起作用
【发布时间】:2019-10-05 14:23:21
【问题描述】:

我有一段代码可以很好地与java-client(5.0.0-BETA6)selenium-java version 3.3.1 配合使用。但是当我升级到java-client version 6.1.0selenium-java version 3.14.0 时,代码开始抛出错误。需要帮助解决问题。

     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. TouchAction 类型中的方法 press(PointOption) 不适用于参数 (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();

【问题讨论】:

    标签: selenium appium appium-android java-client


    【解决方案1】:

    与 Appium java_client v6.0.0-BETA1 不同的Options 引入类似

    1. ElementOption(传递元素)
    2. PointOption(传递坐标)
    3. WaitOptions(通过等待时间)

    TouchActions 类的旧方法已弃用。你可以看到更改日志here

    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();
    

    【讨论】:

    • 感谢您的意见。你说的对。发布问题后,我进行了更多搜索,并准确找到了您提到的内容。我想知道的是这些更改是否非常频繁,因为我必须对代码进行重大更改才能工作。如果它们很频繁,那么人们将很难使用它
    • 根据我的经验,这不是经常发生的事情。
    猜你喜欢
    • 2018-12-27
    • 2022-10-08
    • 1970-01-01
    • 2019-01-04
    • 2021-12-26
    • 1970-01-01
    • 2017-01-02
    • 2015-05-14
    • 1970-01-01
    相关资源
    最近更新 更多