如何使用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")
请帮助并告诉我如何在特定步骤和特定窗口中垂直移动滚动条。
答案 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