How to get the coordinates of an image in Sikuli?
我在我们的项目上有这个GUI(请忍受我的插图,我不允许在工作时截取屏幕截图)
1 2 3 4 5 6 7 8 9 10 11 | ---------------------------------------------- (1) Header | ----------------------------------------------| (2) Files | (3) | Drop-down button (Options) ----------------------------------------|-----| | | ----------------------------------------|-----| | | ----------------------------------------|-----| | | ----------------------------------------------- |
我需要测试我们的产品可以支持的每种文件类型中的一个文件。
最终目标是使用(3)下拉按钮。
以下是我在这部分时的代码摘要
1 2 3 4 5 6 | find_filetype = find.imagedict(filetypeicon.png) #(2) filetype freg = find_filetype.right() if freg.exists(drop-down.png): #(3) drop-down icon freg.click(drop-down.png) |
现在点击(3)后,将出现一个包含4个操作项的下拉菜单。
因此,例如,如果我单击(3a):它将显示在(3b - 3d)下方,显示至少2-3个下拉项。
1 2 3 4 5 6 7 8 9 10 11 | ---------------------------------------------- Header | ----------------------------------------------| | (3a)| ----------------------------------------------| | (a1) | | #a1 = action 1 --------------------------------|---------|---| | (a2) | | #a2 = action 2 --------------------------------|---------|---| |__(a3)___| | ----------------------------------------------- |
如果我点击(3c):
下拉菜单将选择显示在上方(f.a.d.)
显示至少2个下拉项目。
1 2 3 4 5 6 7 8 9 10 11 | ---------------------------------------------- Header | ----------------------------------------------| | (a1) | | --------------------------------|---------|---| | (a2) | | --------------------------------|_________|---| | (3c)| ----------------------------------------|-----| | | ---------------------------------------------- |
我的解决方法是:
截图所有行动项目和
if / elifs + dragDrop()
这使我的脚本变慢(我每天执行数百次迭代)
有没有办法可以找到(a1)(因为它总是在点击(3)后出现),保存它的坐标并将其用作scrollldown_codes的参数,如下所示
1 2 3 4 5 6 7 8 9 | #after clicking drop-down #find and get (action1) coordinates def scroll_down(coordinates): #pass it here while not exist(action(n).png): #n = action choice end_Y = coordinates start_Y = coodinates - few_Y dragdrop(start_Y, end_Y) wait(1) click(action(n).png) |
请帮我!随意提出任何有用的建议!
注意:我只允许在该GUI上单击并拖动,因为它是我们正在开发的触摸屏产品。
与滚动条一样,实际滚动可能不是最佳解决方案,因为它需要许多因各种原因而容易出现故障的其他操作。在这种情况下我通常建议使用键盘来控制选择。实际上很少有选项,这取决于您的应用程序的行为方式。因此,我将列出可能在您的方案中使用的一些技巧,并确定最适合您的方法。
首先,请记住,您可以通过限制您正在查看的区域来加快搜索时间。有很多方法可以做到这一点。例如:
如果您知道您要查找的图案预计仅出现在某个区域,请拆分屏幕。
相对搜索/区域扩展。您可以找到相关的(3)项目,然后展开其右侧的区域以捕获(4)选择器(3个点)所在的区域。这将显着加快搜索速度,因为它只会在一个小区域而不是整个屏幕中查看,它将确保您单击正确的(4)项目。有关区域扩展的更多信息和示例。有关优化搜索时间的更多信息。
现在到菜单中的实际项目选择。因此,正如我所提到的,我认为最好使用键盘来选择项目。这意味着选择/单击列表中的第一项,然后按向下箭头按钮
硬编码吧。如果您知道特定项目在列表中排名第四,则单击4次。
按向下箭头按钮,直到您到达所需的项目。这可能会有点慢,可能需要拍摄额外的屏幕截图,但如果你不知道这些项目的顺序或者是否容易发生变化,可能会有用。