如何使用Java关闭appium中的键盘?

Posted

技术标签:

【中文标题】如何使用Java关闭appium中的键盘?【英文标题】:How to dismiss the keyboard in appium using Java? 【发布时间】: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?  
    

【问题讨论】:

您似乎忘记了您的问题文本。 【参考方案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 中,它会让你回到以前的活动,而不是隐藏键盘 您可以查看此链接以获得我的正确答案***.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();

【讨论】:

以上是关于如何使用Java关闭appium中的键盘?的主要内容,如果未能解决你的问题,请参考以下文章

appium+java 如何隐藏安卓键盘

如何在 iOS 模拟器上使用某种语言键盘启动 Appium 测试

如何使用Java向下滚动到iOS中appium 1.6.4 beta中的确切元素

如何使用javascript检测android设备中的键盘关闭事件

使用 Appium 时,Android 物理设备中的键盘并不总是隐藏

如何使用java在appium中垂直滚动混合应用程序