我正在使用Sikuli IDE测试一个在文本框中返回数据的应用程序。例如,我在name字段中搜索我的测试值'FirstName01‘,应用程序在各种文本框中返回姓名和地址。
然后,我使用Sikuli中的exists()函数验证数据。为此,我单击IDE左上角的exists函数,并使用+工具选择要验证的文本。在本例中为FirstName01和Location01。然后,我将MatchingPreview选项卡上的相似度设置设置为.98 (我发现如果我将其设置为1.0,则即使我得到正确的数据,Sikuli也无法通过测试)。
如果我运行测试搜索FirstName01,我会得到正确的结果,并且Sikuli不会抛出错误。我的问题是,如果我在尝试生成错误条件时搜索并返回FirstName02,即使它正在查找FirstName01,exists函数也会传递它。似乎Sikuli没有验证数据的最后一个字符。它似乎要验证其他字符,因为如果我搜索FirstName21,exists函数会抛出一个错误。有没有人遇到过这个问题?如果有,你是如何解决它的?
我的代码如下
If exists(FirstName01):
popup('passed')
else:
popup('failed')有没有其他方法来验证数据?
发布于 2013-12-04 19:36:57
与其使用exists()来验证文本(因为sikuli的集成开发环境中的OCR非常不可靠),如果有任何方法可以将您想要计算的文本放到剪贴板中,您可以使用Env.getClipboard()来更准确地计算它。
要将其放到剪贴板上,可以使用以下几种方法:
automatically
。
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')这种方法的缺点是,如果文本框中有任何特殊字符,它可能无法正确计算。
发布于 2015-01-16 19:01:56
好的,关于这个答案的第四版...抱歉的。今天是我在Sikuli的第二天,我开始使用Python。
我改编了autoKarma的答案。在我的文本框(多行)中,CTRL+A无法选择所有文本。我使用CTRL+Home转到文本框的开头,使用CTRL+SHIFT+End转到文本框的结尾,选择文本。
类型(Key.HOME,KeyModifier.CTRL)
类型(Key.END,KeyModifier.CTRL | KeyModifier.SHIFT)
所以我遇到了一个问题。它可以手工操作,但在sikuli上不行。搜索我发现的原因:在Sikuli上(实际上是在Java上)有一个bug,但是有一个变通的方法。
keyDown(Key.SHIFT)在数字锁定的情况下不能在Win上工作--关闭;-)
https://stackoverflow.com/questions/20362028
复制相似问题