首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >更新java-client和selenium版本后,Appium代码无法工作。

更新java-client和selenium版本后,Appium代码无法工作。
EN

Stack Overflow用户
提问于 2018-09-08 05:51:08
回答 1查看 1.5K关注 0票数 0

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

代码语言:javascript
复制
     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)

任何解决这一问题的帮助都将不胜感激。谢谢。

下面提到了新版本最终适用于我的代码。不得不做一些改变。

代码语言:javascript
复制
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();
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-09-09 04:04:43

在Appium java_client v6.0.0-BETA1 1中,引入了如下几种不同的Options

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

TouchActions类的旧方法是废弃的。您可以看到更改日志这里

代码语言:javascript
复制
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();
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52232444

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档