【问题标题】:To stop performing a function after this requirement is satisfied满足此要求后停止执行功能
【发布时间】:2020-11-06 07:48:46
【问题描述】:

这是我的代码 它执行keep_click_attendance_link()在此处输入代码功能,直到达到JustBefore时间 然后在EndTime 执行leave_the_meeting() 函数

import pyautogui
import time
import pause
import datetime
import schedule
YEAR = 2020
MONTH = 11
DATE = 6
HOUR = 13
MINUTES = 3
SECONDS = 15
now = datetime.datetime.now()
EndTime = now.replace(hour=HOUR, minute=MINUTES, second=SECONDS, microsecond=0)
JustBefore= now.replace(hour=HOUR, minute=MINUTES-1, second=SECONDS, microsecond=0)

def leave_the_meeting():
  pyautogui.click(1198, 1072)
  time.sleep(3)
  pyautogui.click(1443, 998)
  time.sleep(1)
  pyautogui.click(1398, 933)
 
def click_attendance_link():
      pyautogui.click(1665, 674)
      time.sleep(9)

def keep_click_attendance_link():
  while datetime.datetime.now() < JustBefore:
    click_attendance_link()
    # Sleep for 60 secs before trying again
    time.sleep(9)
    


keep_click_attendance_link()

while datetime.datetime.now() < EndTime:
    # Sleep for 1 sec intervals:
    time.sleep(1)

  # eventually Leave the meeting at Endtime
leave_the_meeting()    


所以我想要的是在点击考勤链接时停止功能keep_click_attendance_link()。老师会在任意时间发送链接,因此我必须对其进行编程,使其在该位置连续单击,直到 EndTime 之前 1 分钟,即 JustBefore。会议在 Zoom 客户端上,而不是在网络浏览器上。

【问题讨论】:

    标签: python function automation


    【解决方案1】:

    首先,不要逃课。

    其次,要执行您打算执行的操作,仅用于教育目的,您将需要一种机制来检测按钮是否已出现。由于您无法直接与缩放客户端通信,因此您需要逐个像素检测屏幕中的像素并分析该像素/区域的 color 是否为颜色出席按钮。

    为此,您需要先找到按钮的颜色代码。它可以通过屏幕捕获简单地完成,并将其放入任何图像处理软件,甚至是画图。获得颜色后,您可以使用Pillow 模块分析该特定点,更多关于here

    检查机制完成后,您可以将其集成到您的代码中,并在检测到按钮后停止函数执行。

    def check_attendance_link_presence():
        # check it here
        pass
    
    def keep_click_attendance_link():
        clicked = False
        while datetime.datetime.now() < JustBefore and not clicked:
            presence = check_attendance_link_presence()
            if presence:
                click_attendance_link()
                clicked = True
            # Sleep for 60 secs before trying again
            time.sleep(60)
    

    附言为了鼓励您在课后“休息”时花时间学习它,我特意不在此处包含存在检查的代码。

    【讨论】:

    • 嗯,谢谢你的帮助。这是你所期望的justpaste.it/7wfr5
    • 是的...我试着把它放进去,但它不起作用。这是整个代码justpaste.it/7vwx0 在添加链接检查之前,我删除了一些函数并将它们合并,它工作正常。我认为问题出在check_attendance_link()函数
    【解决方案2】:

    也许:定义一个类似clicked = False的变量,并在出勤函数中将其设置为True。然后用and clicked == False 修改其他函数中的While。所以你的while循环只循环到clicked flag为False,但点击出勤后,它会变为True,循环停止。

    我认为回调强硬会更优雅。

    【讨论】:

      猜你喜欢
      • 2016-03-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-10-22
      • 2011-03-21
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多