我正在使用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')
还有另一种验证数据的方法吗?
而不是使用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')
这种方法的缺点是,如果文本框中有任何特殊字符,则可能无法正确评估.