使用Sikuli验证文本

 是个success 发布于 2023-02-13 09:35

我正在使用Sikuli IDE来测试在文本框中返回数据的应用程序.例如,我在名称字段中搜索我的测试值'FirstName01',应用程序在各种文本框中返回名称和地址.

然后我使用Sikuli中的exists()函数验证数据.为此,我单击IDE左上角的exists函数,然后使用+工具选择我要验证的文本.在这种情况下,FirstName01和Location01.然后我将MatchingPreview选项卡上的Similarity设置设置为.98(我发现如果我将其设置为1.0,即使我得到正确的数据,Sikuli仍然无法通过测试).

如果我运行测试搜索FirstName01,我得到正确的结果,Sikuli不会抛出错误.我的问题是,如果我搜索并返回FirstName02,试图生成错误条件,即使找到FirstName01,存在的函数也会传递它.似乎Sikuli没有验证数据的最后一个字符.它似乎验证了其他字符,因为如果我搜索FirstName21,则exists函数会抛出错误.有没有人遇到这个问题,如果是这样,你是如何解决它的?

我的代码如下

If exists(FirstName01):
   popup('passed')
else:
   popup('failed')

还有另一种验证数据的方法吗?

1 个回答
  • 而不是使用exists()来验证文本(因为sikuli的IDE中的OCR非常不可靠),如果有任何方法可以将要评估的文本提供给剪贴板,则可以使用Env.getClipboard()来评估它准确度更高.

    要将其放到剪贴板,您可以使用以下几种方法:

      dragDrop()突出显示文本

      也许在文本框中添加标签会自动为您突出显示文本

      在文本上使用doubleClick()(取决于您要突出显示的内容,因此可能无法完成所有操作)

      也许是最可靠的突出显示方式 - 在文本框中选项卡或在文本框内单击()并选择全部:

    .

    click(someImageNearTextBox).offset() #get your cursor inside the textbox
    type("a",KeyModifier.CTRL) #select all to highlight the text
    

    文本突出显示后,您可以这样继续:

    type("c",KeyModifier.CTRL) #copy selection to the clipboard
    firstName = Env.getClipboard().strip() #assign contents of clipboard to a variable
    

    然后你可以将它用于你想要的任何比较:

    if firstName == "FirstName01":
        popup('passed')
    else:
        popup('failed')
    

    这种方法的缺点是,如果文本框中有任何特殊字符,则可能无法正确评估.

    2023-02-13 09:40 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有