如何向下滚动sikuli

时间:2017-06-28 16:12:02

标签: java automation sikuli

如何使用Java在Selenium Eebdriver中向下滚动Sikuli?

我在代码中使用screen.wheel(1 , 8);在打开的窗口中向下滚动。

有时它工作正常但是在运行我的脚本4-5次之后它表现不同。而不是垂直滚动它开始水平滚动。

s.doubleClick("C:\\SikuliX\\Images\\C_Drive.png");
s.wheel( 1, 8); 
s.doubleClick("C:\\SikuliX\\Images\\DestinFolder.png");
s.doubleClick("C:\\SikuliX\\Images\\CfgFolder.png")

请帮助并告诉我如何在特定步骤和特定窗口中垂直移动滚动条。

3 个答案:

答案 0 :(得分:4)

您只需使用快捷方式:

Windows示例:

type(Key.PAGE_DOWN) - scroll down 1 time
type(Key.PAGE_UP) - scroll up 1 time

此外,如果您想重复几次:

type(Key.PAGE_DOWN*3) - scroll down 3 times

MAC示例:

type(Key.DOWN, KeyModifier.CMD) - scroll all the way down

答案 1 :(得分:1)

首先,它与Sikuli无关。其次,请记住,命令是逐个执行的,不要等待屏幕上的实际操作完成。在调用下一个命令之前,为了完全完成所做的任何事情,留出足够的时间是很重要的。如果没有这样做,你就会冒着混乱,不稳定的行为的风险。因此,只是找到当前问题的罪魁祸首,在所有命令之间插入显式等待,并直观地验证每个命令是否仅在前一个命令完成后执行。所以你可以插入这样的东西:

Thread.sleep(timeInMs);

尝试使用键盘滚动而不是不太可靠的鼠标滚动的其他事情。你可以这样做:

s.type(Key.PAGE_DOWN);

答案 2 :(得分:0)

就个人而言,我喜欢在 For Loop 中单击滚动条向下箭头,直到找到图像表明我们已向下滚动得足够远。

参考:https://answers.launchpad.net/sikuli/+faq/1437

# --- this loops forever
while True:
   if not exists(img, 0):
      break # but ends if img gets visible
   else:
      pass # we will see
   wait(5) # check every 5 seconds
print img, "finally came up"

# --- this loops as long as img is visible