目录
影刀是做什么的
什么情况下需要用
与使用高级语言编程实现比较
最近使用了下影刀这个软件,觉得非常不错,推荐给大家。
引用官方的一句话就是:影刀RPA是一款集搭建运行为一体的软件机器人工具,能模拟人对任何电脑或手机应用程序进行鼠标点击、键盘输入、信息读取等操作,帮助人们完成重复、有逻辑规则的工作。
这或许是一个上班摸鱼神器,特别是重复操作类的工作,简直不要太香。
影刀
几乎所有的重复性的电脑操作都可以使用影刀。比如处理网店后台的订单,批量账号的登录注册,客服消息的处理,批量添加删除好友,回复信息,多种平台的信息发布等。
更重要的一点:各流程之间的衔接。各种不同操作之间也可以流程化。比如处理完邮件任务后发一个微信然后上传一个日志等。
目前我只是使用了软件中的网页自动化部分,其它像手机端,电脑窗口等的自动化还未看。
影刀使用类似scratch工具的搭积木方式实现整个自动化过程。集成了目前比较常用的模块积木。通过拖拽积木的方式组织整个操作流程,易于使用。有过编程经验的只需几小时到一两天就可以实现简单的功能。
这是我花了两天时间学习了官方课程做的一个百度贴吧自动签到的实现,只有不到二十行代码。学习官方课程后实现的话就是几分钟的事。
这是软件中编辑的指令,软件自带的模块直接拖拽。
这是上面操作对应的软件自动生成的python代码,是不是很酷呢!!
import xbot
import xbot_visual
from . import package
from .package import variables as glv
import time
def main(args):
try:
web_page = xbot_visual.web.create(web_type="chrome", value="https://tieba.baidu.com/index.html", wait_load_completed=True, load_timeout="20", stop_load_if_load_timeout="handleExcept", chrome_file_name=None, edge_file_name=None, ie_file_name=None, bro360_file_name=None, arguments=None, _block=("main", 1, "打开网页"))
xbot_visual.programing.log(type="info", text="常逛的吧", _block=("main", 2, "打印日志"))
for web_loop_element常逛吧 in xbot_visual.web.element.iter_all_elements(browser=web_page, selector=package.selector("链接_常逛贴吧_相似元素组"), operation="element", absolute_url=False, attribute_name=None, timeout="3", loop_start_index="0", loop_end_index="-1", output_with_index=False, _block=("main", 3, "循环相似元素(web)")):
xbot_visual.programing.log(type="info", text=lambda: '进入' + web_loop_element常逛吧.get_text(), _block=("main", 4, "打印日志"))
xbot_visual.web.element.click(browser=web_page, element=web_loop_element常逛吧, simulate=True, move_mouse=False, clicks="click", button="left", keys="null", delay_after="1", anchor_type="center", sudoku_part="MiddleCenter", offset_x="0", offset_y="0", timeout="20", _block=("main", 5, "点击元素(web)"))
for _xbot_retry_time in range(4):
try:
web_page_贴吧页 = xbot_visual.web.get(web_type="chrome", mode="activated", value="", use_wildcard=False, wait_load_completed=True, load_timeout="20", stop_load_if_load_timeout="handleExcept", open_page=False, url=None, _block=("main", 6, "获取已打开的网页对象"))
break
except Exception as e:
if _xbot_retry_time == 3:
raise e
else:
xbot_visual.programing.log(type='info', text=f'第6条指令: {e}')
time.sleep(3)
xbot_visual.web.element.click(browser=web_page_贴吧页, element=package.selector("链接_签到"), simulate=True, move_mouse=False, clicks="click", button="left", keys="null", delay_after="1", anchor_type="center", sudoku_part="MiddleCenter", offset_x="0", offset_y="0", timeout="20", _block=("main", 7, "点击元素(web)"))
xbot_visual.web.browser.close(operation="close_specified", browser=web_page_贴吧页, web_type="cef", task_kill=False, _block=("main", 8, "关闭网页"))
xbot_visual.programing.sleep(random_number=False, seconds="1", start_number="1", stop_number="5", _block=("main", 9, "等待"))
#endloop
xbot_visual.web.element.hover(browser=web_page, element=package.selector("链接_查看更多"), simulate=True, delay_after="1", anchor_type="center", sudoku_part="MiddleCenter", offset_x="0", offset_y="0", timeout="20", _block=("main", 11, "鼠标悬停在元素上(web)"))
xbot_visual.programing.log(type="info", text="发现更多贴吧", _block=("main", 12, "打印日志"))
for web_loop_element_index, web_loop_element in enumerate(xbot_visual.web.element.iter_all_elements(browser=web_page, selector=package.selector("链接_unsign_相似元素组"), operation="element", absolute_url=False, attribute_name=None, timeout="3", loop_start_index="0", loop_end_index="-1", output_with_index=True, _block=("main", 13, "循环相似元素(web)"))):
xbot_visual.programing.log(type="info", text=lambda: '进入' + web_loop_element.get_text(), _block=("main", 14, "打印日志"))
xbot_visual.web.element.click(browser=web_page, element=web_loop_element, simulate=True, move_mouse=False, clicks="click", button="left", keys="null", delay_after="1", anchor_type="center", sudoku_part="MiddleCenter", offset_x="0", offset_y="0", timeout="20", _block=("main", 15, "点击元素(web)"))
for _xbot_retry_time in range(4):
try:
web_page_贴吧 = xbot_visual.web.get(web_type="chrome", mode="activated", value="", use_wildcard=False, wait_load_completed=True, load_timeout="20", stop_load_if_load_timeout="handleExcept", open_page=False, url=None, _block=("main", 16, "获取已打开的网页对象"))
break
except Exception as e:
if _xbot_retry_time == 3:
raise e
else:
xbot_visual.programing.log(type='info', text=f'第16条指令: {e}')
time.sleep(3)
xbot_visual.web.element.click(browser=web_page_贴吧, element=package.selector("链接_签到"), simulate=True, move_mouse=False, clicks="click", button="left", keys="null", delay_after="1", anchor_type="center", sudoku_part="MiddleCenter", offset_x="0", offset_y="0", timeout="20", _block=("main", 17, "点击元素(web)"))
xbot_visual.programing.log(type="info", text=xbot_visual.sh_str(web_loop_element.get_text()) + "签到点击", _block=("main", 18, "打印日志"))
xbot_visual.web.browser.close(operation="close_specified", browser=web_page_贴吧, web_type="cef", task_kill=False, _block=("main", 19, "关闭网页"))
xbot_visual.programing.sleep(random_number=True, seconds="1", start_number=lambda: 1, stop_number=lambda: 2, _block=("main", 20, "等待"))
#endloop
finally:
pass