有关如何自动化流程的问题

时间:2020-04-09 23:15:42

标签: javascript python linux

长话短说,我正在尝试找出一种方法,该方法可以自动执行一个过程,该过程要求我在窗口中单击以在屏幕变成蓝色时结束录制。我想知道在编码中这种侦听过程是否有特定的名称。如果有人可以帮助我解决这个问题,我将不胜感激。

2 个答案:

答案 0 :(得分:0)

您可以考虑使用pyautogui来完成此任务。

答案 1 :(得分:0)

我不确定我是否完全了解您想要实现的目标,但我已尽力而为。

您可以执行以下操作(代码应易于理解):

1)制作“蓝色区域”的屏幕截图(50x50像素就足够了)。

2)将名称为area.png的文件保存到将要运行该程序的文件夹中

3)运行程序

4)在询问时单击“停止”按钮-如果“停止”按钮不可见,只需单击它将出现的区域(仅用于保存坐标)

import pyautogui
import time
import mouse

blue_xy = False

print('click on the place, where is/or will be the stop button')
mouse.wait(button='left', target_types=('down', 'double'))
stop_button_xy = mouse.get_position()
print('coordinates of stop button are:')
print(stop_button_xy)

while not blue_xy:
    blue_xy = pyautogui.locateOnScreen('area.png')
    time.sleep(2)

print("found area on the screen")
print("clicking the stop_button_xy coordinates")
mouse.move(stop_button_xy[0], stop_button_xy[1])
mouse.click()

实际上pyautogui模块足以完成此任务。 时间也是可选的。

您也可以使用坐标以像素数据检测的方式进行操作(避免进行屏幕截图)。

blue_pixel_data = pyautogui.pixel(x, y)

但是在这种情况下,我认为制作该区域的屏幕截图会更好,因为当您要录制某些东西时,可能会出现与“蓝色”屏幕中具有相同数据的像素完全相同的坐标。

您还可以制作特定区域的屏幕截图以避免出现“单像素问题”,并在运行之前进行屏幕截图:

area_screen = pyautogui.screenshot(region=(x, y, width, height))

将其与mouse.get_position()结合使用以获得x和y坐标时,您可以使过程更自动化。

如果您确定窗口大小(更确切地说是停止按钮的大小)不会改变,则还可以制作该按钮的屏幕截图。程序何时完成:

blue_xy = pyautogui.locateOnScreen('area.png')

您可以使用相同的功能检测停止按钮的位置并保存其坐标。问题在于图像的大小必须与屏幕上显示的大小完全相同,因此我不确定在这种情况下是否合适。