| name | xbot-api |
| description | 影刀RPA平台的Python自动化开发技能。当用户需要开发影刀xbot自动化脚本、使用xbot API进行网页/桌面/移动端自动化、Excel/Word操作、数据库操作、AI集成、PDF处理等功能时使用此技能。 |
影刀XBot API 开发技能
概述
影刀XBot是一个企业级RPA(机器人流程自动化)平台,提供Python API用于开发自动化脚本。此技能涵盖了xbot的核心API使用方法、代码模板和最佳实践。
何时使用此技能:
- 开发影刀xbot自动化流程脚本
- 使用xbot API进行网页自动化(xbot.web)
- Windows桌面应用自动化(xbot.win32)
- 移动端自动化(xbot.mobile)
- Excel/Word文档操作(xbot.excel、xbot.word)
- 数据库操作(xbot.ado)
- AI能力集成(xbot.ai - 阿里云/百度/腾讯)
- PDF文件处理(xbot.pdf)
- FTP文件传输(xbot.ftp)
代码模板规范
基础模板结构
影刀xbot模块必须遵循以下格式:
import xbot
from xbot import print, sleep
from .import package
from .package import variables as glv
def main(args):
pass
重要约束:
- ❌ 不使用
if __name__ == "__main__":
- ✅ 必须使用
def main(args): 作为入口函数
- ✅ 必须导入
xbot 和 package 模块
核心API模块
1. package - 元素与资源管理
元素选择器
selector = package.selector('元素名称')
image_selector = package.image_selector('图像名称')
资源文件操作
text = package.resources.get_text('data.txt', encoding='utf-8')
data = package.resources.get_bytes('image.png')
package.resources.copy_to('template.xlsx', 'D:\\output.xlsx')
package.resources.add_to_clipboard(['file1.txt', 'file2.xml'])
2. xbot.web - 网页自动化
浏览器操作
browser = xbot.web.create('https://example.com', mode='cef')
browser = xbot.web.get(title='百度一下', url='baidu.com')
browser = xbot.web.get_active()
browsers = xbot.web.get_all(url='example.com')
xbot.web.close_all()
网页导航
browser.navigate('https://newurl.com')
browser.go_back()
browser.go_forward()
browser.reload(ignore_cache=True)
url = browser.get_url()
title = browser.get_title()
html = browser.get_html()
text = browser.get_text()
元素操作
element = browser.find(package.selector('登录按钮'))
elements = browser.find_all_by_css('input[type="text"]')
element.click(button='left', simulative=True)
element.input('username', simulative=True, append=False)
element.hover()
text = element.get_text()
value = element.get_value()
attr = element.get_attribute('href')
element.select('选项内容', mode='fuzzy')
element.select_by_index(0)
Cookie管理
cookies = xbot.web.get_cookies(mode='cef', domain='.example.com')
xbot.web.set_cookie(
url='https://example.com',
name='session_id',
value='abc123',
expires=3600
)
xbot.web.remove_cookie('https://example.com', 'session_id')
对话框处理
browser.handle_javascript_dialog(dialog_result='ok', text='输入内容')
xbot.web.handle_save_dialog(
file_folder='D:\\downloads',
file_name='report.pdf'
)
xbot.web.handle_upload_dialog('D:\\files\\upload.pdf')
3. xbot.win32 - Windows桌面自动化
窗口操作
window = xbot.win32.get(title='记事本', class_name='Notepad')
window = xbot.win32.get_by_selector(package.selector('窗口元素'))
window.activate()
window.set_state('maximize')
window.move(x=100, y=100)
window.resize(width=800, height=600)
window.close()
window.wait_active(timeout=20)
window.wait_exists(timeout=20)
window.wait_close(timeout=20)
元素操作
element = window.find(package.selector('按钮元素'))
elements = window.find_all(package.selector('列表项'))
element.click(button='left', simulative=True)
element.input('输入内容')
element.check(mode='check')
element.select('选项')
element.hover()
element.drag_to(simulative=True, top=50, left=100, delay_after=1)
鼠标键盘操作
xbot.win32.mouse_move(500, 300, move_speed='fast')
xbot.win32.mouse_click(button='left', click_type='click')
xbot.win32.mouse_wheel(wheel_direction='down', wheel_times=3)
xbot.win32.send_keys('Ctrl+C')
xbot.win32.send_keys('Hello World')
pos = xbot.win32.get_mouse_position(relative_to='screen')
图像识别
xbot.win32.Image.wait_appear(
image_selectors=[package.image_selector('确认按钮')],
timeout=20
)
xbot.win32.Image.click(
image_selectors=[package.image_selector('图标')],
button='left'
)
xbot.win32.Image.hover([package.image_selector('菜单')])
剪切板操作
clipboard = xbot.win32.Clipboard
clipboard.set_text('复制的内容')
text = clipboard.get_text()
clipboard.clear()
clipboard.set_file(['D:\\file1.txt', 'D:\\file2.pdf'])
截图操作
xbot.win32.Screenshot.save_screen_to_file(
'D:\\screenshot.png',
image_format='png'
)
xbot.win32.Screenshot.save_screen_to_clipboard()
xbot.win32.Screenshot.save_window_to_file(
hwnd=window.handle,
image_path='D:\\window.png',
image_format='png'
)
4. xbot.excel - Excel操作
工作簿操作
workbook = xbot.excel.create(kind='office', visible=True)
workbook = xbot.excel.open('D:\\data.xlsx', kind='office', visible=True)
workbook = xbot.excel.get_active_workbook(kind='office')
workbook.save()
workbook.save_as('D:\\output.xlsx')
workbook.close()
工作表操作
sheet = workbook.get_active_sheet()
sheet = workbook.get_sheet_by_name('Sheet1')
sheet = workbook.get_sheet_by_index(1)
workbook.create_sheet('新工作表', create_way='last')
workbook.active_sheet_by_name('Sheet1')
workbook.delete_sheet('旧工作表')
workbook.copy_sheet('源工作表', '目标工作表')
workbook.rename_sheet('旧名称', '新名称')
单元格操作
value = sheet.get_cell(1, 'A')
row = sheet.get_row(1)
column = sheet.get_column('A')
range_data = sheet.get_range(1, 'A', 5, 'C')
sheet.set_cell(1, 'A', '标题')
sheet.set_row(1, ['A', 'B', 'C'], begin_column_name='A')
sheet.set_column('A', [1, 2, 3, 4], begin_row_num=1)
sheet.set_range(1, 'A', [[1, 2], [3, 4]])
sheet.append_row(['新', '数', '据'])
sheet.insert_row(3, ['插入', '数据'])
sheet.remove_row(5)
sheet.remove_column('C')
sheet.clear()
sheet.clear_range(1, 'A', 10, 'Z')
其他功能
row_count = sheet.get_row_count()
col_count = sheet.get_column_count()
free_row = sheet.get_first_free_row()
free_col = sheet.get_first_free_column()
sheet.select_range(1, 'A', 10, 'C')
sheet.copy_range(1, 'A', 5, 'C')
sheet.paste_range(1, 'D')
5. xbot.word - Word操作
文档操作
doc = xbot.word.create(kind='office', visible=True)
doc = xbot.word.open(
'D:\\document.docx',
kind='office',
visible=True,
open_password='',
edit_password=''
)
doc.save()
doc.save_as('D:\\output.docx')
doc.export_to_pdf(
'D:\\output.pdf',
export_range=0,
page_from=1,
page_to=5
)
doc.close()
内容操作
selection = doc.get_selection()
selection.write_text('Hello World', newline=True)
text = selection.read_text()
selection.insert_picture(
image_source='local',
image_path='D:\\image.png',
image_scale=100,
newline=True
)
doc.insert_hyperlink('点击这里', 'https://example.com')
doc.insert_table(
table_data=[['A', 'B'], ['1', '2']],
table_data_format=None,
grid=True,
newline=True
)
selection.replace_text(
search_text='旧文本',
replace_text='新文本',
replace_all=True,
case_sensitive=False
)
selection.move_cursor(
move_direction='right',
move_count=10,
press_shift=False
)
selection.locate_cursor_to_document('end_document')
selection.locate_cursor_to_text('关键词')
doc.locate_cursor_to_bookmark('书签名')
6. xbot.mobile - 移动端自动化
连接设备
mobile = xbot.mobile.connect(
appium_url='http://127.0.0.1:4723/wd/hub',
platform_name='Android',
platform_version='11',
device_name=' emulator-5554'
)
mobile = xbot.mobile.connect_by_custom_name('我的手机')
mobile.close()
元素操作
element = mobile.find(package.selector('登录按钮'))
elements = mobile.find_all_by_id('com.app:id/button')
elements = mobile.find_all_by_xpath('//android.widget.Button')
element.click()
element.input('输入内容')
element.longpress()
element.get_text()
element.get_attribute('text')
element.screenshot('D:\\element.png', 'element_screenshot')
屏幕操作
mobile.click(500, 300)
mobile.dblclick(500, 300)
mobile.longpress(500, 300)
mobile.swipe(
start_point_x=100, start_point_y=500,
end_point_x=100, end_point_y=100,
swipe_time=800
)
mobile.back()
mobile.home()
mobile.switchapp()
orientation = mobile.getoriention()
mobile.setoriention(0)
mobile.screenshot('D:\\screen.png', filename='screenshot')
剪切板操作
mobile.set_clipboard_text('复制内容')
text = mobile.get_clipboard_text()
7. xbot.pdf - PDF操作
text = xbot.pdf.extract_text(
path='D:\\document.pdf',
from_page=1,
to_page=10,
password=None
)
xbot.pdf.extract_images(
path='D:\\document.pdf',
from_page=1,
to_page=5,
save_to_dir='D:\\images',
name_prefix='page'
)
xbot.pdf.extract_pages(
path='D:\\source.pdf',
from_page=1,
to_page=3,
save_to='D:\\extracted.pdf'
)
xbot.pdf.merge_pdfs(
paths=['file1.pdf', 'file2.pdf'],
save_to='D:\\merged.pdf',
passwords=None
)
8. xbot.ado - 数据库操作
db = xbot.ado.Database
db.open('Driver={SQL Server};Server=localhost;Database=test;')
db.exec('SELECT * FROM users', timeout_seconds=20)
db.exec('UPDATE users SET name="test" WHERE id=1')
db.close()
9. xbot.ai - AI能力集成
result = xbot.ai.AliyunAI.ocr_from_file('D:\\image.png')
result = xbot.ai.BaiduAI.ocr_from_file('D:\\image.png')
result = xbot.ai.TencentAI.ocr_from_file('D:\\image.png')
10. xbot.ftp - FTP操作
ftp = xbot.ftp.connect(
host='ftp.example.com',
username='user',
password='pass'
)
ftp.download_file('D:\\local\\file.txt', 'remote/file.txt')
ftp.download_folder('D:\\local', 'remote/folder')
ftp.upload_file('D:\\local\\file.txt', 'remote/')
ftp.upload_folder('D:\\local', 'remote/')
files = ftp.get_ftp_files('remote/path')
ftp.unlogin()
11. xbot.app - 数据表格与对话框
数据表格操作
databook = xbot.app.databook
row = databook.get_row(1)
cell = databook.get_cell(1, 'A')
range_data = databook.get_range(1, 'A', 10, 'C')
row_count = databook.get_row_count()
databook.set_cell(1, 'A', '值')
databook.set_row(1, ['A', 'B', 'C'])
databook.set_column('A', [1, 2, 3])
databook.set_range(1, 'A', [[1, 2], [3, 4]])
databook.append_row(['新', '行'])
databook.insert_row(3, ['插入', '行'])
databook.remove_row(5)
databook.clear()
对话框操作
xbot.app.dialog.show_alert('操作完成', title='提示')
result = xbot.app.dialog.show_confirm('确定要删除吗?', title='确认')
xbot.app.dialog.show_message_box(
title='提示',
message='操作成功',
button='ok',
timeout=5
)
xbot.app.dialog.show_workbook_dialog('数据确认', '请确认以下数据')
xbot.app.dialog.show_notifycation(
message='任务完成',
placement='rightbottom',
level='info',
timeout=3
)
12. xbot.xzip - 压缩解压
xbot.xzip.zip(
file_folder_path='D:\\source',
zip_file_path='D:\\archive.zip',
compress_level=5,
password='secret'
)
xbot.xzip.unzip(
zip_file_path='D:\\archive.zip',
unzip_dir_path='D:\\extracted',
password='secret'
)
通用功能
日志输出
from xbot import print, sleep
print('普通消息')
print('重要信息')
sleep(3)
全局变量
from .package import variables as glv
glv.set('username', 'admin')
username = glv.get('username')
常见使用场景
场景1:网页表单自动填写
import xbot
from xbot import print, sleep
from .import package
from .package import variables as glv
def main(args):
browser = xbot.web.create('https://example.com/form')
browser.find(package.selector('用户名')).input('admin')
browser.find(package.selector('密码')).input('password123')
browser.find(package.selector('登录按钮')).click()
sleep(2)
print('登录成功')
场景2:Excel数据批量处理
import xbot
from xbot import print, sleep
from .import package
from .package import variables as glv
def main(args):
workbook = xbot.excel.open('D:\\data.xlsx')
sheet = workbook.get_active_sheet()
row_count = sheet.get_row_count()
for i in range(1, row_count + 1):
name = sheet.get_cell(i, 'A')
sheet.set_cell(i, 'C', '已处理')
workbook.save()
workbook.close()
场景3:Windows软件自动化
import xbot
from xbot import print, sleep
from .import package
from .package import variables as glv
def main(args):
window = xbot.win32.get(title='无标题 - 记事本')
window.wait_active(timeout=10)
window.find(package.selector('编辑区')).input('Hello XBot!')
xbot.win32.send_keys('^s')
sleep(1)
window.find(package.selector('文件名输入框')).input('D:\\test.txt')
window.find(package.selector('保存按钮')).click()
场景4:PDF文档处理
import xbot
from xbot import print, sleep
from .import package
from .package import variables as glv
def main(args):
text = xbot.pdf.extract_text(
path='D:\\document.pdf',
from_page=1,
to_page=5
)
print(f'提取文本长度: {len(text)}')
xbot.pdf.extract_images(
path='D:\\document.pdf',
from_page=1,
to_page=5,
save_to_dir='D:\\images'
)
资源说明
references/
api_summary.md - 完整API速查手册
package.md - package模块详细文档
assets/
default_module_template.py - 影刀xbot标准模块模板(不含if __name__ == "__main__")
注意事项
- 入口函数规范:必须使用
def main(args):,不能使用if __name__ == "__main__":
- 模块导入:必须导入
xbot、print、sleep、package和glv
- 元素选择:使用
package.selector()获取元素库中的元素
- 图像识别:使用
package.image_selector()获取图像库中的图像
- 异常处理:建议添加适当的异常处理逻辑
- 资源释放:使用完毕后记得关闭工作簿/浏览器等资源