我正在使用appium来自动化Android应用程序。在那里,无法对以下案例的文本字段执行sendkeys(): 单击“添加客户”选项。将打开一个新页面。我想在文本字段中输入值。我能够使用xpath在页面上找到文本字段。我能够点击文本字段。但是当我执行sendkeys()时,它失败了。 请参阅以下屏幕截图。
链接:1 - 添加客户之前(第1页)
链接:2 - 添加客户 - 打开新页面(第2页)并尝试输入详细信息
链接:3 - 关闭页面打开(第2页)并登陆第1页
答案 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);