【问题标题】:Katalon WebUI.SetMaskedText() randomly wrapping textKatalon WebUI.SetMaskedText() 随机换行文本
【发布时间】:2019-06-29 02:56:31
【问题描述】:

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

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

结果

代码在输入时随机换行。我尝试将字符串用作“8015558245”并掩码为“(801)555-8245”,结果均随机包装:

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

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

代码

这是我的代码:

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

规格

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

Chrome 是浏览器。

【问题讨论】:

    标签: testing automated-tests katalon-studio


    【解决方案1】:

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

    也许可以尝试使用具有较小 x 和 y 值的 WebUI.clickOffset(enterPhoneNumber,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.setMaskedText(..),而是发送了整个字符串,就好像它是使用 WebUI.sendKeys(..) 键入的一样。

    在五次不同的测试中运行五次后,最终代码可靠地运行(所有其他之前的尝试在 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
    

    就是这样!

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

    【讨论】:

      【解决方案3】:

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

      我不确定我是否清楚地理解了这个案例。通常,我使用 sendKeys 关键字来处理这种情况,这将演示打字动作,以便正确添加电话格式。

      【讨论】:

      • 为了回答您的问题,这是一个蒙面的文本框。这意味着 jquery 正在格式化文本。你可以了解更多here
      猜你喜欢
      • 1970-01-01
      • 2019-03-12
      • 2021-12-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-06-19
      • 2019-08-14
      • 2018-05-14
      相关资源
      最近更新 更多