Weblog.SetMaskedText()随机包装文本

问题描述 投票:1回答:3

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

(蒙板文本表示我们使用jquery自动格式化输入的文本。您可以了解更多here。)上面的下划线只是表示电话号码数字的空格。 :)

Results

输入时代码随机包装文本。我尝试将字符串用作'8015558245'并屏蔽为'(801)555-8245',两者都随机包装结果:

  • (015)558-2458
  • (155)582-4580
  • (555)824-5801

我在多次搜索互联网时发现的唯一建议是首先双击元素,这不会影响结果。每次我以隐身模式运行测试。偶尔它会起作用,其余的时间它会失败。

Code

这是我的代码:

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

眼镜

我使用的是Katalon v5.9.1,但它也没有在早期版本上运行。

Chrome是浏览器。

testing automated-tests katalon-studio
3个回答
2
投票

我认为这可能会发生,因为WebUI.doubleClick()瞄准元素的中间位置,因此它开始在()后面的某处键入。

也许尝试使用WebUI.clickOffset(enterPhoneNumber,x,y)与x和y的小值(例如5 px - 从元素的左上角计算),所以你确定点击将落在第一个(_ _ _数字位置附近的某处。

另一种选择是使用

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

import org.openqa.selenium.Keys

进口。


2
投票

答案是一系列的事情:

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

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

第二:手动输入文本的文本始终输入正确。因此,我只是发送了整个字符串,就好像它是使用WebUI.sendKeys(..)键入的一样,而不是WebUI.setMaskedText(..)。

在五个不同测试中进行五次测试后,最终代码可靠地运行(所有其他先前的尝试在1-2次尝试中失败)是:

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

而已!

希望这可以帮助其他人解决这个问题!


0
投票

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

我不确定我是否清楚地理解了这个案子。通常情况下,我通过使用sendKeys关键字处理这种情况,这将解释输入操作,以便可以正确添加电话格式。

© www.soinside.com 2019 - 2024. All rights reserved.