Automagica是一个开源的智能机器人过程自动化(SRPA)平台,对一些自动化的库进行了整合

安装


官网地址:https://github.com/oakwoodai/automagica

python3.7下载:https://www.python.org/downloads/release/python-373

# 需要python版本为3.7,系统为Win10
pip install https://github.com/OakwoodAI/automagica/tarball/master

功能使用


引用库


from automagica import *

鼠标控制


获取鼠标坐标

GetMouseCoordinates()

WX20190628-134247

鼠标相关操作

# 左键
ClickOnPosition(x, y)

# 双击
DoubleClickOnPosition(x, y)

# 右键
RightClickOnPosition(x, y)

# 移动至坐标位置
MoveToPosition(x, y)

# 基于当前坐标的移动
MoveRelative(x, y)

# 拖动
DragToPosition(x, y, button="left")

场景测试:

鼠标移动到某个位置,然后拖动文件到另一个位置

MoveToPosition(33, 33)
DragToPosition(333, 333, "left")

a1

键盘控制


按键

PressKey(key="Keyname")

Keyname比较多,可以查阅官方文档 https://automagica.readthedocs.io/#keyboard

组合键

# PressHotkey(first_key,second_key,third_key=None)
PressHotkey("ctrl","shift","esc")

输入

Type("www.imshanks.com", interval_seconds=0.01)
Enter()
Type("Automagica python RPA库实践", interval_seconds=0.01)
Enter()
Type("测试中文输入", interval_seconds=0.01)

由于是模拟键盘输入,所以不能直接输入中文

2

特殊按键

Capslock()
Numlock()
Enter()
SpaceBar()
Backspace()
Delete()
Endkey()
Tab()

浏览器控制


这块比较简单,基本就是封装了selenium

browser = ChromeBrowser()
browser.get('https://baidu.com/')
search_input = browser.find_element_by_xpath('//*[@id="kw"]')
search_btn = browser.find_element_by_xpath('//*[@id="su"]')
search_input.send_keys("site:www.imshanks.com")
search_btn.click()

3

系统软件控制


按文件路径打开

Openfile("C:\\Users\\shanks\\test.txt")

打开基础应用

OpenCalculator()
OpenPaint()
OpenNotepad()
OpenSnippingTool()
OpenControlPanel()
OpenCleanManager()
OpenDialer()
OpenVolumeMixer()
OpenXPSViewer()

启动服务进程

LaunchProcess("C:\\\Progra~2\\Dropbox\\Client\\Dropbox.exe")
# OR
OpenProgramByName("Dropbox")

检测进程是否存在

ProcessRunning(name="program_name")

WX20190628-152504

常用进程检测

ChromeRunning()
WordRunning()
ExcelRunning()
PowerpointRunning()
DropboxRunning()
FirefoxRunning()
TeamviewerRunning()
SkypeRunning()
EdgeRunning()
OnedriveRunning()
IllustratorRunning()

# 列出所有
ListRunningProcesses()

监控


CPULoad(measure_time=1)
NumberOfCPU(logical=True)CPUFreq()
CPUStats()
DiskStats()
DiskPartitions()
BootTime()
TimeSinceLastBoot()

试一下很直观

WX20190628-152943

Office软件控制


Word

document = OpenWordDocument(r'C:\Users\shanks\Documents\python\test.docx')
print(document)
document = ReplaceTextInDocument(document, text='[placeholder]', replace_with='My text')
ConvertWordToPDF(word_filename=r'C:\Users\shanks\Documents\python\test.docx', pdf_filename=r'C:\Users\shanks\Documents\python\test.pdf')
  1. 打开文档并不会打开word窗口,只会生成一个document对象
  2. 替换直接报错
  3. pdf命令没有任何

WX20190628-153805

这块功能很少且有bug,可以忽略不计了

Excel

首先准备一个测试xlsx

WX20190628-154002

xlsx_filepath = r'C:\Users\shanks\Documents\python\test.xlsx'
# 根据Cell获取
ExcelReadCell(path=xlsx_filepath, cell="A1", sheet=None)
# 根据行列获取
ExcelReadRowCol(path=xlsx_filepath, r=1, c=2, sheet=None)
# 根据Cell写入
ExcelWriteCell(path=xlsx_filepath, sheet=None, cell="D1", write_value="Value1")

WX20190628-155048 WX20190628-155103

常用操作

ExcelCreateWorkbook(path=\"pathname\")
ExcelOpenWorkbook(path=\"pathname\")
ExcelSaveExistingWorkbook(path=\"pathname\", new_path=None)
ExcelCreateWorkSheet(path=\"pathname\", sheet_name=None)
ExcelGetSheets(path=\"pathname\")

# 取值并转List
ExcelPutRowInList(path=xlsx_filepath, start_cell="A1", end_cell="C2", sheet=None)
# => ['A1-test', 'B1-test', 'C1-test']
ExcelPutColumnInList(path=xlsx_filepath, start_cell="A3", end_cell="A8", sheet=None)
# => ['A1-test', 'A2-test']

# 横纵取值
ExcelPutSelectionInMatrix(path=xlsx_filepath, upper_left_cell="A1", bottom_right_cell="C2", sheet=None)
# => [['A1-test', 'B1-test', 'C1-test'], ['A2-test', 'B2-test', 'C2-test']]

PDF


比较简单,就2个方法

# 合并
MergePDF(pdf1=\"pathname\", pdf2=\"pathname\", merged_pdf=\"pathname\")

# 获取文本
ExtractTextFromPDFPage(path=\"pathname\", page=1)

文件及文件夹控制


基本就是重新封装了一些常用命令,详见文档 https://automagica.readthedocs.io/#file-and-folder-manipulations

图片控制


包含缩放、旋转、打开、获取信息等基本操作,详见文档 https://automagica.readthedocs.io/#image-operations

邮件发送


SendMailWithHotmail(user="user@hotmail.com", password, destination, subject="", message="", port=587)
SendMailWithGmail(user="user@gmail.com", password, destination, subject="", message="", port=587)
SendMailWithYahoo(user="user@yahoo.com", password, destination, subject="", message="", port=587)

基础操作


都是python基础,便于不懂python的人使用框架,详见文档https://automagica.readthedocs.io/#basic-operations_1

总结


还有1个很重要的功能是OCR,基于Google开源库https://github.com/tesseract-ocr/tesseract实现。Automagica对大量的自动化库进行了整合,可以更方便的实现RPA,官方也表示支持很多商用软件,如SAP、Salesforce等等,这些需要对业务进行分析,流程设计并熟练使用基础功能才能达到的。