| 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(