【问题标题】:How to type text without selecting an element in CodeceptJS?如何在不选择 CodeceptJS 中的元素的情况下键入文本?
【发布时间】:2022-08-08 15:59:13
【问题描述】:

通常我使用I.fillField(elementSelector, text)text 填充到带有elementSelector xpath 或某事的字段中。

我有一个只有一个元素的情况(Appium 显示没有嵌套元素),这实际上是六个正方形,彼此相邻,中间有一个小间隙,如果你点击任何一个正方形,第一个是专注,您可以输入一个 6 位数的 PIN 码来填充所有方块,而无需单独点击每个方块。

使用 CodeceptJS 我自然首先尝试了通常的首选功能I.fillField,但是键盘没有弹出,所以该字段没有被填满。

出于调试目的,我还尝试了I.grabElementAndTap,发现键盘也没有弹出。所以我的结论是,给定偶数个方格,I.fillFieldI.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


    【解决方案1】:

    对于 Android,您始终可以使用:

    I.sendDeviceKeyEvent(7) 
    

    事件“7”将发送一个“0”键。这是所有Key Events 的列表。

    对于 iOS,请使用:

    I.tap('~0')
    

    这将点击键盘上的“0”键,或者只是将键更改为您需要的任何其他键而不是 0。

    【讨论】:

      猜你喜欢
      • 2014-08-23
      • 2020-08-09
      • 1970-01-01
      • 2011-05-05
      • 2022-12-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多