【问题标题】:How to dismiss the keyboard in appium using Java?如何使用Java关闭appium中的键盘?
【发布时间】:2014-06-06 20:32:30
【问题描述】:

这段代码只是为了找到文本框并向它发送一些文本。 当它这样做时,键盘出现在android设备上。如何在sendKeys之后将其关闭。

@Test
    public static void test_demo() throws Exception {
        WebElement element = driver.findElement(By.id("mytextfield"));
        element.sendKeys("test");
        //how do I dismiss keyboard which appears on my android device after sendKeys?  
    }

【问题讨论】:

  • 您似乎忘记了您的问题文本。

标签: java android appium


【解决方案1】:

driver.hideKeyboard() 仅适用于 AppiumDriver。 我正在使用包含此功能的 java-client-2.2.0.jar。

【讨论】:

  • 也适用于 Javascript 客户端。
  • if(getDriver().isKeyboardShown()) { getDriver().hideKeyboard(); }
【解决方案2】:

最好的方法是使用返回按钮。

driver.navigate().back(); // For older version of appium

【讨论】:

  • 这将适用于某些 android api,但会在其他 api 上失败。在一些 android Api 中,它会让你回到以前的活动,而不是隐藏键盘
  • 您可以查看此链接以获得我的正确答案stackoverflow.com/questions/21704358/…
【解决方案3】:

如果您想在 android selenium 测试中禁用键盘,请添加这些所需的功能值。

capabilities.setCapability("unicodeKeyboard", true);
capabilities.setCapability("resetKeyboard", true);

【讨论】:

  • 键盘在我的情况下仍然弹出。
【解决方案4】:

请使用 Appium 1.0

添加库或添加Appium Java客户端的maven依赖:

<dependency>
  <groupId>io.appium</groupId>
  <artifactId>java-client</artifactId>
  <version>1.1.0</version>
</dependency>

通过以下方式创建驱动实例:

AppiumDriver driver=null;
driver= new AppiumDriver(new URL("http://127.0.0.1:4723/wd/hub"),capabilities);

并使用以下函数隐藏键盘:

driver.hideKeyboard();

【讨论】:

  • Appium 1.1.0 在调用 hideKeyboard() 时抛出一个尚未实现的方法
  • hideKeyboard() 在 java-client 1.5.0 中实现
  • 如果由于某种原因键盘不存在怎么办(例如,在模拟器上的键盘不显示在 send_keys 上)。在这种情况下,您将返回并且测试出错。您需要以某种方式检查 OSK 是否存在
【解决方案5】:

每次我使用sendKeys() 输入内容时,我都会使用driver.hideKeyboard();。非常适合我。

【讨论】:

    【解决方案6】:

    不使用AppiumDriver的人的解决方案:

    ((AppiumDriver)driver).hideKeyboard(); 
    

    【讨论】:

      【解决方案7】:
      public static AndroidDriver driver= null;
      ......
      
      driver.hideKeyboard();
      

      根据我的经验可以完美运行。

      【讨论】:

        【解决方案8】:

        driver.hideKeyboard(); 有时不起作用。 因为在运行测试用例时键盘出现速度不快,所以测试用例失败。 如果我在hideKeyboard 方法之前使用Thread.sleep(5000);,那么每次对我来说都很好。

        try {
            Thread.sleep(5000);
        } catch (Exception e) {
            e.getMessage();
        }
        driver.hideKeyboard();
        

        【讨论】:

          猜你喜欢
          • 2014-09-29
          • 1970-01-01
          • 2010-10-16
          • 2011-11-28
          • 2019-06-04
          • 2018-10-16
          • 2020-01-12
          • 2017-01-10
          • 2011-08-02
          相关资源
          最近更新 更多