我试图在软件中进行多个屏幕截图,有时软件会显示错误消息。当该消息出现时,我想点击它(而不是截图(,然后转到下一部分进行截图。
我正在使用Pyautogui来做这件事,因为它以前非常有用。但这一次,由于显示了这个错误消息,我很难处理它。Pyautogui具有在屏幕截图上定位特定部分的功能,但当它不在屏幕截图中时,它不会给出False,而是会产生错误。
我的第一个想法是使用if语句,但没有搜索到的图像会导致程序崩溃,我尝试了try/except组合,但现在它产生了某种无用的循环。
你能看看我当前的代码并帮我修复它吗?
import time
import pyautogui
counter = 0
dimensions = (50,0,1000,1000)
time.sleep(5) # waiting 5 seconds before taking screenshots
while counter < 10 :
time.sleep(1) # waiting 1 second
im = pyautogui.screenshot(region=dimensions)
filename = str(counter) +"_PAGE1" + ".png"
im.save(filename) # saves the screenshot in a file
time.sleep(1) # waiting 1 second
pyautogui.press('enter') #make the software go the next page
try
pyautogui.locateOnScreen('errormessage.png'):
pyautogui.press('enter') #click OK on the error message
pyautogui.press('up') #go to the next line in the software
counter += 1
continue #to start over the while loop
except:
pass
im = pyautogui.screenshot(region=dimensions)
filename = str(counter) +"_PAGE2" + ".png"
im.save(filename) # saves the screenshot in a file
time.sleep(1) # waiting 1 second
pyautogui.press('escape') #go back to previous page
pyautogui.press('up') #go to the next line in the software
counter += 1
所以我从软件中的1行开始,截图,点击回车键。此时,要么出现一条错误消息,然后我想单击它上的"确定",然后移动到下一行(向上(,增加计数器并从while循环开始。要么显示下一页,我想截图,然后点击escape返回,然后移动到下一行(向上(,增加计数器并从while循环开始。
正如我上面所说,我尝试了几种不同的变体,但迄今为止没有成功。(将代码放在except中而不是"pass"中,使用if语句…(
我希望我的解释足够清楚。正如你所看到的,我是Python的初学者,但我会努力提高我的技能,我们将非常感谢你的帮助。
欢呼,Sam
所以在尝试了一堆东西之后,我终于找到了一个解决方法。我确实使用了if语句和一个肮脏的技巧:
if str(pyautogui.locateOnScreen('errormessage.png')) != "None":
它做得恰到好处!
享受生活!