Katalon WebUI.SetMaskedText() 随机包装文本

Katalon WebUI.SetMaskedText() randomly wrapping text

我在弹出窗口中有一个字段,用于输入带有屏蔽文本的 phone 数字:“( _ _ _ ) _ _ _ - _ _ _ _”。

(屏蔽文字表示我们正在使用jquery自动格式化正在输入的文字。您可以了解更多here。)上面的下划线只是表示数字的空格phone 号。 :)

结果

代码在输入时随机换行文本。我试过将字符串用作“8015558245”并伪装成“(801)555-8245”,结果都是随机换行:

我在多次互联网搜索中发现的唯一建议是先双击该元素,这不会影响结果。每次我 运行 都在隐身模式下测试。偶尔能用,其他时候就失效了。

代码

这是我的代码:

TestObject enterPhoneNumber = findTestObject('path/PhoneNumberObject')
WebUI.doubleClick(enterPhoneNumber)
WebUI.setMaskedText(enterPhoneNumber, '8015558245')

规格

我正在使用 Katalon v5.9.1,但它也不适用于早期版本。

Chrome是浏览器。

我认为您需要仔细检查一下: - 当您输入 phone 号码时,是否会自动添加 ()? - setMaskText() 用于将文本输入为“**************”

不知道我是否理解清楚了。通常,我使用 sendKeys 关键字来处理这种情况,这将演示键入操作,以便可以正确添加 phone 格式。

我认为这可能是因为 WebUI.doubleClick() 以元素的中间为目标,所以它开始在 () 后面的某处输入。

也许可以尝试使用 WebUI.clickOffset(enterPhoneNumber,x,y) 和较小的 x 和 y 值(例如 5 像素 - 从元素的左上角计算),这样您就可以确定点击会落在第一个 [= 附近的某处14=]位数.

另一个选项正在使用

WebUI.click(enterPhoneNumber)
WebUI.sendKeys(enterPhoneNumber, Keys.chord(Keys.HOME))
WebUI.setMaskedText(enterPhoneNumber, '8015558245')

import org.openqa.selenium.Keys

进口。

答案是综合的:

首先: 我需要将光标设置在左括号右侧的屏蔽文本的左侧。为了保证这一点,我使用了建议的 clickOffset(enterPhoneNumber, 40, 5)。 [感谢@Matt Mrse 的建议!]

这没有修复使用 WebUI.setMaskedText(..) 时的文本换行,但它允许下一部分可靠地工作,即:

其次:手动输入框中的文本始终输入正确。因此,我没有使用 WebUI.setMaskedText(..),而是发送了整个字符串,就好像它是使用 WebUI.sendKeys(..).

键入的一样

在五次不同测试中运行五次测试后,可靠运行的最终代码是这样的:

    WebUI.clickOffset(enterPhoneNumber, 40, 5)
    WebUI.sendKeys(enterPhoneNumber, '8015558245')
    WebUI.delay(1) //For humans to be able to see that text was entered correctly

就是这样!

希望这对解决此问题的其他人有所帮助!