在Android appium驱动程序上Sendkeys失败

时间:2014-08-27 14:28:49

标签: selenium-webdriver appium

我正在使用appium来自动化Android应用程序。在那里,无法对以下案例的文本字段执行sendkeys(): 单击“添加客户”选项。将打开一个新页面。我想在文本字段中输入值。我能够使用xpath在页面上找到文本字段。我能够点击文本字段。但是当我执行sendkeys()时,它失败了。 请参阅以下屏幕截图。

链接:1 - 添加客户之前(第1页)   enter image description here

链接:2 - 添加客户 - 打开新页面(第2页)并尝试输入详细信息

enter image description here 链接:3 - 关闭页面打开(第2页)并登陆第1页 enter image description here

5 个答案:

答案 0 :(得分:2)

我可以通过在App键盘上输入AppiumDriver.sendKeyEvent(int key)来将密钥发送到android文本字段:

driver.findElement(locator).click();
driver.sendKeyEvent(29); // android key event code for letter 'a', look up key code at 
                         // android.view.KeyEvent library
driver.hideKeyboard();

您可以使用循环以这种方式使用android键盘发送字符串的所有字符。要么使用android.view.KeyEvent,要么自己将字符转换为密钥代码(int)

答案 1 :(得分:0)

首先尝试向元素发送一个.Click()事件,以便弹出键盘(可能需要暂停一两秒才能让它有时间在屏幕上绘制)。然后尝试sendKeys()方法。这对我有用。

如果仍然不起作用,另一种方法是使用adb。以下命令将文本发送到当前活动的元素。

adb shell input text "<your string>"

答案 2 :(得分:0)

最简单的方法是将文本字段作为列表,然后单独传递值。在你的情况下,我猜代码将是:

driver.findElements(By.tagname("textfield")).get(1).sendkeys("xyz");
driver.findElements(By.tagname("textfield")).get(2).sendkeys("abc");

这对我在Android模拟器和设备中也很有效。

答案 3 :(得分:0)

我可以使用以下代码输入文本或将密钥发送到Android应用程序文本框:

driver.findElement(By.id("com.example.app-package:id/edt_first_name")).sendKeys("Poras");

你可以使用android uiautomatorviewer 查找元素ID,了解如何在这里使用Can we find element by ID in appium 希望这会对你有所帮助。

答案 4 :(得分:0)

可以使用Action类完成

let query     = [];
let locations = ['pune', 'nashik'];
query.push({
    '$match': { 'location': { '$in': locations } }                
});
const output = await Users.aggregate(query);