【问题标题】:Getting error in Appium that mobile:longClick is not implemented..is there another way?在 Appium 中出现 mobile:longClick 未实现的错误..还有其他方法吗?
【发布时间】:2014-10-27 08:32:42
【问题描述】:

我正在使用 Java 和 Appium 1.2.0 版自动化原生 Android 应用程序。我想自动长按列表中的一行以显示一些可通过长按访问的选项,现在我手动测试它。这是我尝试过的:

     WebDriverWait wait = new WebDriverWait(driver, 30);
     HashMap<String,String> longtapObj= new HashMap<String,String>();
    WebElement elem = wait.until(ExpectedConditions.presenceOfElementLocated(By.xpath("//android.widget.ListView[1]/android.widget.RelativeLayout[1]")));
    JavascriptExecutor js = (JavascriptExecutor) driver;        
    longtapObj.put("element", ( (RemoteWebElement) elem).getId()  );
     js.executeScript("mobile:longClick", longtapObj);

Appium 服务器日志错误:

2014-09-02T23:29:45.808Z - 调试:收到的请求带有参数:{"args":[{"element":"5"}],"script":"mobile:longClick"} 2014-09-02T23:29:45.810Z - 调试:响应客户端未实现方法

2014-09-02T23:29:45.810Z - 信息:

2014-09-02T23:29:48.518Z - 信息:--> GET /wd/hub/status {}

Eclipse JUnit 错误:

org.openqa.selenium.WebDriverException:尚未实现。请帮助我们:http://appium.io/get-involved.html(警告:服务器没有提供任何堆栈跟踪信息) 命令持续时间或超时:9 毫秒

如果注释掉语句 js.executeScript("mobile:longClick", longtapObj);没有错误被抛出。感谢是否有人知道在本机 android 应用程序中使用 Appium 实现 log press 的正确方法。

【问题讨论】:

    标签: java appium


    【解决方案1】:

    1.5 版的变化

    移除长期弃用的手机:xxx

    所以你应该:

    • 安装 Android 支持存储库...

      Android 测试支持库可通过 Android SDK 管理器获得

      通过 SDK 管理器下载 Android 支持库:

      1. 启动 Android SDK 管理器。
      2. 在 SDK 管理器窗口中,滚动到 Packages 列表的末尾,找到 Extras 文件夹,如有必要,展开以显示其内容。
      3. 选择Android Support Repository项。
      4. 点击安装包...按钮。
    • 使用触控操作

      driver.performTouchAction(new TouchAction(driver).tap(x, y));

    【讨论】:

      【解决方案2】:
      mobile:longClick  is no longer supported by appium version greater than 1.0.0. As you are using Appium version 1.2.0. so you have to perform this action by using something like this.
      

      例如:

       testObject = this.WaitAndGetElement();//element on which long tap is to be performed          
      TouchAction action = new TouchAction(rm);// rm is the instance of appium driver.       
      Thread.Sleep(1000); 
      action.Press(testObject).Wait(1000).Perform();
      

      更多信息可以访问:TouchAction

      如果有帮助请告诉我

      【讨论】:

      【解决方案3】:
          JavascriptExecutor js = (JavascriptExecutor) driver;
          HashMap<String, String> longTapObject = new HashMap<String, String>();
          longTapObject.put("element",((RemoteWebElement)w1).getId());
          js.executeScript("mobile: longClick", longTapObject);
      

      上面的代码在java中为我工作 Appium 版本 1.2.4.1

      【讨论】:

      【解决方案4】:
      public void longClick(String element) {
              // TODO Auto-generated method stub
              WebElement webElement = appiumDriver.findElement(By.xpath(element));
      
              TouchAction Action = new TouchAction(appiumDriver);
              Action.longPress(webElement).release().perform();
          }
      

      【讨论】:

        猜你喜欢
        • 2023-03-11
        • 2021-08-29
        • 2013-03-11
        • 2020-06-28
        • 1970-01-01
        • 2017-04-27
        • 1970-01-01
        • 1970-01-01
        • 2023-02-20
        相关资源
        最近更新 更多