我正在使用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')
还有另一种验证数据的方法吗?
答案 0 :(得分:10)
不是使用exists()来验证文本(因为sikuli的IDE中的OCR非常不可靠),如果有任何方法可以将要评估的文本放到剪贴板中,则可以使用Env.getClipboard()以更准确的方式评估它。
要将其移至剪贴板,您可以使用以下几种方法:
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')
这种方法的缺点是,如果文本框中有任何特殊字符,则可能无法正确评估。
答案 1 :(得分:-1)
我改编了autoKarma的答案。在我的文本框(多行)上,CTRL + A无法选择所有文本。我使用CTRL + Home转到文本框的开头,按CTRL + SHIFT + End结束选择文本。
type(Key.HOME,KeyModifier.CTRL)
类型(Key.END,KeyModifier.CTRL | KeyModifier.SHIFT)
所以我遇到了问题。它可以手工完成,但不适用于sikuli。 找到原因我发现:Sikuli上存在一个错误(实际上是Java),但是有一个工作区。
keyDown(Key.SHIFT)无法使用Num-Lock打开Win - 将其关闭; - )