这是我尝试过的:
Screen screenWithCalendarField = new Screen();
Match calendar = new Match();
try{
calendar = screenWithCalendarField.find(new File("D:\\Sikuli\\CalendarField.png").getAbsolutePath());
}
catch(Exception e){
}
calendar.hover();
delay(5)
calendar.mouseMove(25, 0)
delay(10)
calendar.click();
鼠标按预期移动(距离比赛右侧 25 像素),但随后又向后移动,并且仍然在比赛位置执行单击。
我应该使用什么来在距离比赛右侧 25 像素处完成点击?
这是来自 SikuliX 的 RaiMan。
由于
calendar
是一场比赛,因此 click()
将始终单击当前与比赛一起存储的位置(在您的情况下为中心)。 mouseMove()
只移动鼠标,但不会改变比赛中存储的位置。
要单击当前鼠标位置而不是
calendar.click()
,请使用 screenWithCalendarField.click(Mouse.at())
。
您也可以使用 calendar.click()
,但使用 Screen 类更清晰,因为无论如何当前鼠标位置都在屏幕坐标中。
如果您想要单击的偏移量从一开始就已知,您应该使用 Pattern 类来定义要搜索的对象,因为它允许设置要搜索的图像的偏移量。
这就是我的版本(简化以显示基础知识):
Screen scr = new Screen;
String image = "D:\\Sikuli\\CalendarField.png";
Pattern pattern = new Pattern(image).targetOffset(25, 0);
Match calendar = scr.exists(pattern, 0);
if (offset != null) calendar.click();
else doSomethingIfNotFound(pattern); //doSomethingIfNotFound to be defined ;-)
希望有帮助。