【发布时间】:2022-08-08 15:59:13
【问题描述】:
通常我使用I.fillField(elementSelector, text) 将text 填充到带有elementSelector xpath 或某事的字段中。
我有一个只有一个元素的情况(Appium 显示没有嵌套元素),这实际上是六个正方形,彼此相邻,中间有一个小间隙,如果你点击任何一个正方形,第一个是专注,您可以输入一个 6 位数的 PIN 码来填充所有方块,而无需单独点击每个方块。
使用 CodeceptJS 我自然首先尝试了通常的首选功能I.fillField,但是键盘没有弹出,所以该字段没有被填满。
出于调试目的,我还尝试了I.grabElementAndTap,发现键盘也没有弹出。所以我的结论是,给定偶数个方格,I.fillField 和I.grabElementAndTap 两个函数必须直接在方格 3 和 4 之间的中间敲击,并且手动测试我确认这不会打开键盘。
然后我决定采用不同的方法。使用rect = I.grabElementBoundingRect(elementSelector),我得到了应该点击打开键盘的确切屏幕坐标:
position = {
x: parseInt(rect.x) + parseInt(rect.height) / 2
y: parseInt(rect.y) + parseInt(rect.height) / 2
}
然后与
I.touchPerform([{
action: \'press\',
options: position
}])
我成功地点击了打开键盘的元素。
我现在如何仅使用键盘输入文本(无需再次获取键盘上每个数字的 x,y 坐标和touchPerform)?
如果我现在使用I.fillField,我必须将elementSelector 作为第一个参数,然后关闭键盘。
有没有办法在不选择任何内容的情况下使用打开的键盘打字?
或者touchPerform 也可以输入文本?
标签: android ios testing appium codeceptjs