我正在尝试使SAP中的某些东西自动化。为此,我输入了交易代码,然后按Enter键(使用pywinauto完成)。现在,屏幕应更改并转到“ screen2”。但是,有时由于网络速度慢,需要很多时间才能进入“ screen2”。如果发生这种情况,我的下一行代码(将在下一个屏幕中输入一些文本(再次由pywinauto键盘模块完成))尚无该输入文本的字段,因此脚本将引发错误。我可以花很长的时间time.sleep()
,但是当网络速度很好时(这是大多数时间),那么,长时间的睡眠浪费了时间,这破坏了我要尝试做的事情,这是为了节省时间时间。
我有只在“ screen2”上可用的图像。因此,在我按Enter键之后,我想每0.5秒用代码pyautogui.locateOnScreen(r'CrtDocScreen.png', confidence =0.8)
在屏幕上搜索一次图像,直到找到图像为止。找到图像后,我们知道我们位于“ screen2”上,我们可以继续。我只是无法完成这部分,因为当pyautogui.locateOnScreen
找不到图像时,它会抛出“ ImageNotFoundException”,并且我知道如何将其作为结果并继续循环图像搜索。
请帮助!
答案 0 :(得分:0)
我创建了以下函数,该函数将寻找下一个屏幕10秒钟,然后中止。如果在10秒内找到所需的屏幕,则循环将中断,程序将继续。
对于以下功能,您必须 1.从datetime导入datetime 2.导入pyautogui 3.从pyscreeze导入ImageNotFoundException
NededScr是带有图像文件的变量(例如:“ landingscreen.png”)。因此,NededScr = r“ landingscreen.png”
def Waitfor (NededScr):
startloop_time = datetime.now()
while True:
try:
pyautogui.locateOnScreen(NededScr, confidence =0.8)
break
except ImageNotFoundException:
time_delta = datetime.now() - startloop_time
if time_delta.total_seconds() >= 10:
print("Could not find the required screen. Document creating for this order aborted")
break
pass