sikuli (python) 脚本从一天中的 xx 小时开始,wait("image.png",highnumber) 不工作?
sikuli (python) script starting at xx hour of the day, wait("image.png",highnumber) not working?
首先感谢所有能帮助我的人
我一直在使用一个程序来自动化我喜欢的游戏中的一些无聊功能,但它不再起作用了。
我想让它做的事情真的很愚蠢,但我没有得到好的结果..所以
1) 因为我需要在准确的时间 运行 它,所以我在论坛上找到了这个,并稍微调整了一下,将其设置为上午 11 点左右开始:
from datetime import datetime
from threading import Timer
x=datetime.today()
y=x.replace(day=x.day, hour=11, minute=0, second=20, microsecond=0)
delta_t=y-x
secs=delta_t.seconds+1
def something():
***Script below***
t = Timer(secs, something)
t.start()
那么,第一部分是否正确?
2) 第二部分是实际的脚本,实际上是这样的:
for x in range (0, 50):
wait("im0.png"),25)
click("im0.png")
wait("im1.png",15)
if exists("im2.png"):
click("im2.png")
if exists("im3.png",50)
type("something")
x +=1
如您所见,我将其设置为等待(或存在)图像 25(15 和 40)秒,但我感觉它不是在等待我设置的那个时间,我不能尝试脚本经常出现,但我认为它纠结于等待图像命令,比如 "FindFailed xxx.png" 等等
我希望它每秒检查一次图像是否存在,然后执行下面的操作(因为它会出现,而且我不希望它跳过任何内容),我是否应该以类似循环的方式更改它"if not exists" 然后它再次检查自己? (这种输入将不胜感激,我不太擅长在 python 中编写脚本)
谁能帮我写成 better/right 的方式?
去罗马的方式有很多,所以没有 1 个好的答案,但还有更多。
如果您想制作一个在给定时间做某事的简单循环,您可以简单地使用:
import time
image1 = ("image1.png")
alarm = '17:37:00'
while (True):
# Look what time it is right now [24 hour format].
currentTime = time.strftime("%H:%M:%S")
if (currentTime == alarm):
print('It is time!')
# Exit the (while) loop.
break;
对于第二部分,您也可以让我们成为 while not exists()
要使其更像是一个完整的脚本,您可以使用:
import time
image1 = ("image1.png")
image2 = ("image2.png")
image3 = ("image3.png")
alarm = '17:37:00'
class Robot():
# Automaticly executes when class is called.
def __init__(self):
# Wait until it is time for the alarm to go off.
while (True):
# Look what time it is right now [24 hour format].
currentTime = time.strftime("%H:%M:%S")
if (currentTime == alarm):
print('It is time!')
# Call another definition.
self.startWork()
# Exit the (while) loop to finsih the script.
break;
# Find and click the image.
def startWork(self):
while not exists(image1):
# We didn't see the image, sleep for 1 second.
wait(1)
# When the code gets here, image1 has appeared.
imageLoc1 = find(image1)
imageLoc1.click()
# Now we are going to look if we see eather image2 or image3
while not exists(image2) or not exists(image3):
wait(1)
# Image2 or image3 is seen.
if exists(image2):
imageLoc2 = find(image2)
imageLoc2.click()
elif exists(image3):
imageLoc3 = find(image3)
imageLoc3.click()
# Run class
Robot()
要使循环 while not exists()
在图像未出现一定时间后也结束,您可以使用:
i = 0
while not exists(image1):
i = i + 1
wait(1)
# After 60 seconds break the loop anyway.
if (i == 60):
break
首先感谢所有能帮助我的人
我一直在使用一个程序来自动化我喜欢的游戏中的一些无聊功能,但它不再起作用了。
我想让它做的事情真的很愚蠢,但我没有得到好的结果..所以
1) 因为我需要在准确的时间 运行 它,所以我在论坛上找到了这个,并稍微调整了一下,将其设置为上午 11 点左右开始:
from datetime import datetime
from threading import Timer
x=datetime.today()
y=x.replace(day=x.day, hour=11, minute=0, second=20, microsecond=0)
delta_t=y-x
secs=delta_t.seconds+1
def something():
***Script below***
t = Timer(secs, something)
t.start()
那么,第一部分是否正确?
2) 第二部分是实际的脚本,实际上是这样的:
for x in range (0, 50):
wait("im0.png"),25)
click("im0.png")
wait("im1.png",15)
if exists("im2.png"):
click("im2.png")
if exists("im3.png",50)
type("something")
x +=1
如您所见,我将其设置为等待(或存在)图像 25(15 和 40)秒,但我感觉它不是在等待我设置的那个时间,我不能尝试脚本经常出现,但我认为它纠结于等待图像命令,比如 "FindFailed xxx.png" 等等
我希望它每秒检查一次图像是否存在,然后执行下面的操作(因为它会出现,而且我不希望它跳过任何内容),我是否应该以类似循环的方式更改它"if not exists" 然后它再次检查自己? (这种输入将不胜感激,我不太擅长在 python 中编写脚本)
谁能帮我写成 better/right 的方式?
去罗马的方式有很多,所以没有 1 个好的答案,但还有更多。
如果您想制作一个在给定时间做某事的简单循环,您可以简单地使用:
import time
image1 = ("image1.png")
alarm = '17:37:00'
while (True):
# Look what time it is right now [24 hour format].
currentTime = time.strftime("%H:%M:%S")
if (currentTime == alarm):
print('It is time!')
# Exit the (while) loop.
break;
对于第二部分,您也可以让我们成为 while not exists()
要使其更像是一个完整的脚本,您可以使用:
import time
image1 = ("image1.png")
image2 = ("image2.png")
image3 = ("image3.png")
alarm = '17:37:00'
class Robot():
# Automaticly executes when class is called.
def __init__(self):
# Wait until it is time for the alarm to go off.
while (True):
# Look what time it is right now [24 hour format].
currentTime = time.strftime("%H:%M:%S")
if (currentTime == alarm):
print('It is time!')
# Call another definition.
self.startWork()
# Exit the (while) loop to finsih the script.
break;
# Find and click the image.
def startWork(self):
while not exists(image1):
# We didn't see the image, sleep for 1 second.
wait(1)
# When the code gets here, image1 has appeared.
imageLoc1 = find(image1)
imageLoc1.click()
# Now we are going to look if we see eather image2 or image3
while not exists(image2) or not exists(image3):
wait(1)
# Image2 or image3 is seen.
if exists(image2):
imageLoc2 = find(image2)
imageLoc2.click()
elif exists(image3):
imageLoc3 = find(image3)
imageLoc3.click()
# Run class
Robot()
要使循环 while not exists()
在图像未出现一定时间后也结束,您可以使用:
i = 0
while not exists(image1):
i = i + 1
wait(1)
# After 60 seconds break the loop anyway.
if (i == 60):
break