- 概述
- 详情
- parent
- children
- child_at
- next_sibling
- click
- dblclick
- input
- clipboard_input
- hover
- check
- select
- select_by_index
- set_value
- get_attribute
- get_all_attributes
- get_text
- get_value
- drag_to
- screenshot
- screenshot_to_clipboard
- get_bounding
- get_all_select_items
- get_selected_item
- expand_tree_and_select_node
- get_table_cell_by_rownum_and_columnnum
- get_table_row_count
- get_table_column_count
概述
element接口主要是对win32元素的处理,如元素点击、输入框填写、复选框和下拉框操作已经元素属性值的获取和设置等
详情
parent
获取当前元素的父元素
parent(self)
参数:
- 无
返回值:
Win32Element
:返回当前元素的父元素
示例1:
通过Chrome浏览器打开 百度 网页并返回和元素选择器 百度一下 匹配的元素对象,然后获取该对象的父对象
def main(args):
window = xbot.win32.get('记事本')
win_element = window.find('菜单项目_文件F')
parent_element = win_element.parent()
children
获取当前元素的所有子元素
children(self)
参数:
- 无
返回值:
List<Win32Element>
:返回当前元素的所有子元素
示例1:
通过Chrome浏览器打开 百度 网页并返回和元素选择器 百度一下 匹配的元素对象,然后获取该对象的子对象
def main(args):
window = xbot.win32.get('记事本')
win_element = window.find('菜单栏_应用程序')
children_elements = win_element.children()
child_at
获取指定位置的子元素
child_at(self, index)
参数:
- index:子元素的位置索引,从0开始计数
返回值:
Win32Element
:返回指定位置的子元素
_
示例1:
def main(args):
window = xbot.win32.get('记事本')
win_element = window.find('菜单栏_应用程序')
child_element = win_element.child_at(0)
next_sibling
获取下一个并列的兄弟元素
next_sibling(self)
参数:
- 无
返回值:
Win32Element
:返回下一个并列的兄弟元素
_
示例1:
def main(args):
window = xbot.win32.get('记事本')
win_element = window.find('菜单项目_文件F')
sibling_element = win_element.next_sibling()
click
单击win32元素
click(self, button=’left’, simulative=True, keys=’none’, delay_after=1, move_mouse=True, anchor=None)
参数:
- button:单击时鼠标按下的按键, 默认为鼠标左键
- ‘left’:鼠标左键
- ‘right’:鼠标右键
- simulative:是否模拟人工点击, 默认为
True
,模拟人工点击 - keys:鼠标单击时使用的键盘辅助按键, 如
Alt
键,Ctrl
键等, 可谓空, 默认为空- ‘none’:不需要键盘辅助按键
- ‘alt’:键盘Alt键
- ‘ctrl’:键盘Ctrl键
- ‘shift’:键盘Shift键
- ‘win’:键盘Win键
- delay_after:执行成功后延迟时间,默认延迟1s
- move_mouse:是否显示鼠标移动轨迹, 默认为
True
,显示鼠标移动轨迹 - anchor:锚点,鼠标点击元素的位置以及偏移量元组,可为 None,默认值为 None,为 None 时默认点击目标中心且无偏移量,参数结构如下:
- sudoku_part:鼠标悬停的位置, 默认悬停在中心
- ‘topLeft’:悬停左上角
- ‘topCenter’:悬停在上中部
- ‘topRight’:悬停在右上角
- ‘middleLeft’:悬停在左中部
- ‘middleCenter’:悬停在中心
- ‘middleRight’:悬停在右中部
- ‘bottomLeft’:悬停左下角
- ‘bottomCenter’:悬停在下中部
- ‘bottomRight’:悬停在右下角
- offset_x:鼠标位置的水平偏移量
- offset_y’:鼠标位置的垂直偏移量
- sudoku_part:鼠标悬停的位置, 默认悬停在中心
返回值:
- 无
实列1:
获取 编辑文本编辑器 窗口并用鼠标左键点击 菜单项目文件F 元素,点击的同时按下 Alt 键
from xbot import win32
def main(args):
wnd = win32.get('编辑_文本编辑器')
win32_element = wnd.find('菜单项目_文件F')
win32_element.click('left', True, 'alt', 1, True, anchor=('middleCenter', 100, 100))
dblclick
双击win32元素
dblclick(self, simulative=True, delay_after=1, move_mouse=True, anchor=None)
参数:
- simulative:是否模拟人工点击, 默认为
True
,模拟人工点击 - delay_after:执行成功后延迟时间, 默认延迟1s
- move_mouse:是否显示鼠标移动轨迹, 默认为
True
,显示鼠标移动轨迹 - anchor:锚点,鼠标点击元素的位置以及偏移量元组,可为 None,默认值为 None,为 None 时默认点击目标中心且无偏移量,参数结构如下:
- sudoku_part:鼠标悬停的位置, 默认悬停在中心
- ‘topLeft’:悬停左上角
- ‘topCenter’:悬停在上中部
- ‘topRight’:悬停在右上角
- ‘middleLeft’:悬停在左中部
- ‘middleCenter’:悬停在中心
- ‘middleRight’:悬停在右中部
- ‘bottomLeft’:悬停左下角
- ‘bottomCenter’:悬停在下中部
- ‘bottomRight’:悬停在右下角
- offset_x:鼠标位置的水平偏移量
- offset_y’:鼠标位置的垂直偏移量
- sudoku_part:鼠标悬停的位置, 默认悬停在中心
返回值:
- 无
示例1:
获取 编辑文本编辑器 窗口并用鼠标左键双击 菜单项目文件F 元素
from xbot import win32
from . import package
def main(args):
wnd = win32.get('编辑_文本编辑器')
win32_element = wnd.find('菜单项目_文件F')
win32_element.dblclick(True, 1, True, anchor=('middleCenter', 100, 100))
input
填写win32输入框
input(self, text: str, simulative=True, append=False, contains_hotkey=False, send_key_delay=50, focus_timeout=1000, delay_after=1, anchor=None)
参数:
- text:需要填写到win32输入框中的文本内容
- simulative:是否模拟人工输入,模拟人工输入时会有明显的输入效果,非模拟人工输入时目标内容将会直接出现在输入框中, 默认为
True
,模拟人工输入 - append:是否追加输入,追加输入会保留输入框中原有内容,在原有内容最后面追加写入内容,非追加时写入会覆盖输入框中原有内容,默认值为
False
,非追加写入 - contains_hotkey:输入内容是否包含快捷键,该选项只有在模拟人工输入时起效,默认值为
False
,不包含快捷键 - send_key_delay:两次按键之间的时间间隔,默认为50ms
- focus_timeout:焦点超时时间(获取焦点和输入操作的间隔),默认1000毫秒
- delay_after:执行成功后延迟时间, 默认延迟1s
- anchor:锚点,鼠标点击元素的位置以及偏移量元组,可为 None,默认值为 None,为 None 时默认点击目标中心且无偏移量,参数结构如下:
- sudoku_part:鼠标悬停的位置, 默认悬停在中心
- ‘topLeft’:悬停左上角
- ‘topCenter’:悬停在上中部
- ‘topRight’:悬停在右上角
- ‘middleLeft’:悬停在左中部
- ‘middleCenter’:悬停在中心
- ‘middleRight’:悬停在右中部
- ‘bottomLeft’:悬停左下角
- ‘bottomCenter’:悬停在下中部
- ‘bottomRight’:悬停在右下角
- offset_x:鼠标位置的水平偏移量
- offset_y’:鼠标位置的垂直偏移量
- sudoku_part:鼠标悬停的位置, 默认悬停在中心
返回值:
- 无
实列1:
获取 编辑文本编辑器 窗口并在 输入框 元素中输入 _helloworld
from xbot import win32
from . import package
def main(args):
wnd = win32.get('编辑_文本编辑器')
win32_element = wnd.find('输入框')
win32_element.input('helloworld', True, True, False, 1,
anchor=('middleCenter', 100, 100))
实列2:
获取 编辑文本编辑器 窗口并在 输入框 元素中输入 回车_
from xbot import win32
from . import package
def main(args):
wnd = win32.get('编辑_文本编辑器')
win32_element = wnd.find('输入框')
win32_element.input('{enter}', True, False, True, 1,
anchor=('middleCenter', 100, 100))
实列1:
获取 编辑文本编辑器 窗口并在 输入框 元素中输入 _helloworld
from xbot import win32
from . import package
def main(args):
wnd = win32.get('中国民生银行个人网上银行 - Internet Explorer')
win32_element = wnd.find('民生银行_账号')
win32_element.input('123456789', False)
win32_element = wnd.find('民生银行_密码')
win32_element.driver_input('987654321', 1)
clipboard_input
使用剪切板填写win32输入框(能够有效避免输入法带来的问题)
clipboard_input(self, text: str, append=False, focus_timeout=1000, delay_after=1, anchor=None)
参数:
- text:需要填写到win32输入框中的文本内容
- append:是否追加输入,追加输入会保留输入框中原有内容,在原有内容最后面追加写入内容,非追加时写入会覆盖输入框中原有内容,默认值为
False
,非追加写入 - focus_timeout, 焦点超时时间(获取焦点和输入操作的间隔),默认1000毫秒
- delay_after:执行成功后延迟时间, 默认延迟1s
- anchor:锚点,鼠标点击元素的位置以及偏移量元组,可为 None,默认值为 None,为 None 时默认点击目标中心且无偏移量,参数结构如下:
- sudoku_part:鼠标悬停的位置, 默认悬停在中心
- ‘topLeft’:悬停左上角
- ‘topCenter’:悬停在上中部
- ‘topRight’:悬停在右上角
- ‘middleLeft’:悬停在左中部
- ‘middleCenter’:悬停在中心
- ‘middleRight’:悬停在右中部
- ‘bottomLeft’:悬停左下角
- ‘bottomCenter’:悬停在下中部
- ‘bottomRight’:悬停在右下角
- offset_x:鼠标位置的水平偏移量
- offset_y’:鼠标位置的垂直偏移量
- sudoku_part:鼠标悬停的位置, 默认悬停在中心
返回值:
- 无
示例1:
获取 编辑文本编辑器 窗口并使用剪切板输入往 输入框 元素中输入 _helloworld
from xbot import win32
from . import package
def main(args):
wnd = win32.get('编辑_文本编辑器')
win32_element = wnd.find('输入框')
win32_element.clipboard_input('helloworld', False, 1,
anchor=('middleCenter', 100, 100))
hover
鼠标悬停在win32元素上
hover(self, simulative=True, delay_after=1, anchor=None)
参数:
- simulative:是否模拟人工悬停,模拟人工悬停会有明显的鼠标移动轨迹,非模拟人工时鼠标会瞬间悬停在win32元素上,默认值为True,模拟人工悬停
- delay_after:执行成功后延迟时间, 默认延迟1s
- anchor:锚点,鼠标点击元素的位置以及偏移量元组,可为 None,默认值为 None,为 None 时默认点击目标中心且无偏移量,参数结构如下:
- sudoku_part:鼠标悬停的位置, 默认悬停在中心
- ‘topLeft’:悬停左上角
- ‘topCenter’:悬停在上中部
- ‘topRight’:悬停在右上角
- ‘middleLeft’:悬停在左中部
- ‘middleCenter’:悬停在中心
- ‘middleRight’:悬停在右中部
- ‘bottomLeft’:悬停左下角
- ‘bottomCenter’:悬停在下中部
- ‘bottomRight’:悬停在右下角
- sudoku_part:鼠标悬停的位置, 默认悬停在中心
返回值:
- 无
示例1:
获取 编辑文本编辑器 窗口并将鼠标悬停在 输入框_ 元素上
from xbot import win32
from . import package
def main(args):
wnd = win32.get('编辑_文本编辑器')
win32_element = wnd.find('输入框')
win32_element.hover(True, 1)
check
设置win32复选框是否选中
check(self, mode=’check’, delay_after=1)
参数:
- mode:win32复选框的设置状态, 默认为
check
选中- ‘check’:选中
- ‘uncheck’:取消选中
- delay_after:执行成功后延迟时间, 默认延迟1s
返回值:
- 无
示例1:
获取 窗口_QQ 窗口并勾选 自动登录 复选框
from xbot import win32
from . import package
def main(args):
wnd = win32.get('窗口_QQ')
win32_element = wnd.find('自动登录')
win32_element.check('check', 1)
select
根据下拉项内容设置win32下拉框内容
select(self, item: str, mode=’fuzzy’, delay_after=1)
参数:
- item:要设置的某一项的文本内容
- mode:对设置项文本内容的匹配模式, 默认为模糊匹配
- ‘fuzzy’:模糊匹配
- ‘exact’:精确匹配
- ‘regex’:正则匹配
- delay_after:执行成功后延迟时间, 默认延迟1s
返回值:
- 无
示例1:
使用精准匹配,设置win32下拉框选中项为内容是 helloword 的项
from xbot import win32
from . import package
def main(args):
wnd = win32.get('窗口_QQ')
win32_element = wnd.find('QQ号码')
win32_element.click()
win32_element = wnd.find('xxx')
win32_element.select('helloword', 'fuzzy', 1)
示例3:
使用正则表达式匹配,设置win32下拉框选中项为内容是以h开头以d结尾的项
from xbot import win32
from . import package
def main(args):
wnd = win32.get('窗口_QQ')
win32_element = wnd.find('QQ号码')
win32_element.click()
win32_element = wnd.find('xxx')
win32_element.select('h.+d/', 'regex', 1)
select_by_index
根据目标项的下标设置下拉框内容
select_by_index(self, index: int, delay_after=1)
参数:
- index:要设置的目标项的下标, 小标位置从0开始
- delay_after:执行成功后延迟时间, 默认延迟1s
返回值:
- 无
示例1:
设置win32下拉框选中项为下标为 1 项
from xbot import win32
from . import package
def main(args):
wnd = win32.get('窗口_QQ')
win32_element = wnd.find('QQ号码')
win32_element.click()
win32_element = wnd.find('xxx')
win32_element.select_by_index(1, 1)
set_value
给win32元素设置值
set_value(self, value: str)
参数:
- value:要设置给win32元素的文本值
返回值:
- 无
示例1:
设置win32元素的值为 helloword
from xbot import win32
from . import package
def main(args):
wnd = win32.get_by_selector(package.selector('窗口_QQ'))
win32_element = wnd.find(package.selector('QQ号码'))
win32_element.set_value('helloword')
get_attribute
获取win32元素的属性值
get_attribute(self, name: str)
参数:
- name:win32元素的属性值
返回值:
str
:返回win32元素的目标属性值
示例1:
获取win32元素属性 height 的值
from xbot import win32
from . import package
def main(args):
wnd = win32.get_by_selector(package.selector('窗口_QQ'))
win32_element = wnd.find(package.selector('QQ号码'))
height = win32_element.get_attribute('height')
get_all_attributes
获取win32元素的全部属性值
get_all_attributes(self)
参数:
无
返回值:
typing.List[typing.Tuple]
:返回win32元素的全部属性名与属性值的组合列表如[(‘name’, ‘hello’), (‘height’, ‘100’)]
示例1:
获取桌面新建文本文档的全部属性值
from xbot import win32
def main(args):
wHnd = win32.get_desktop()
element = wHnd.find('新建文本文档')
attributes = element.get_all_attributes()
get_text
获取win32元素的文本内容
get_text(self)
参数:
- 无
返回值:
str
:返回win32元素的文本内容
示例1:
获取 文本框 中的文本内容
from xbot import win32
def main(args):
wnd = win32.get('新建文本')
win32_element = wnd.find('文本框')
height = win32_element.get_text()
get_value
获取win32元素的详细信息
get_value(self)
参数:
- 无
返回值:
str
:返回win32元素的详细信息
示例1:
获取win32元素的纤细信息
from xbot import win32
from . import package
def main(args):
wnd = win32.get_by_selector(package.selector('窗口_QQ'))
win32_element = wnd.find(package.selector('QQ号码'))
win32_element_value = win32_element.get_value()
drag_to
将win32元素拖拽到指定位置
drag_to(self, simulative=True, behavior=’smooth’, top=0, left=0, delay_after=1, anchor=None)
参数:
- simulative:是否模拟人工拖拽,默认人工拖拽会有明显的拖拽移动痕迹,非模拟人工拖住会瞬间将win32元素拖拽到指定位置,默认值为True模拟人工拖拽
- behavior:拖拽方式, 默认为平滑拖拽
- ‘smooth’:平滑拖拽
- ‘instant’:瞬间拖拽
- top, 相对于当前元素中心的纵向位移
- left, 相对于当前元素中心的横向位移
- delay_after, 执行成功后延迟时间, 默认延迟1s
- anchor:锚点,鼠标点击元素的位置以及偏移量元组,可为 None,默认值为 None,为 None 时默认点击目标中心且无偏移量,参数结构如下:
- sudoku_part:鼠标悬停的位置, 默认悬停在中心
- ‘topLeft’:悬停左上角
- ‘topCenter’:悬停在上中部
- ‘topRight’:悬停在右上角
- ‘middleLeft’:悬停在左中部
- ‘middleCenter’:悬停在中心
- ‘middleRight’:悬停在右中部
- ‘bottomLeft’:悬停左下角
- ‘bottomCenter’:悬停在下中部
- ‘bottomRight’:悬停在右下角
- sudoku_part:鼠标悬停的位置, 默认悬停在中心
返回值
- 无
示例1:
模拟人工,平滑的将win32元素移动到 x:100,y:100 的位置
from xbot import win32
from . import package
def main(args):
wnd = win32.get_by_selector(package.selector('窗口_QQ'))
win32_element = wnd.find(package.selector('QQ号码'))
win32_element.drag_to(True, 'smooth', 100, 100, 1)
screenshot
对win32元素进行截图并保存
screenshot(self, folder_path, *, filename=None)
参数:
- folder_path, 截图保存的路径
- filename, 截图保存时的文件名, 可为空, 为空时会更具当前时间自动生成文件名
返回值:
- 无
示例1:
对win32元素进行截图,并将结果保存到D盘根目录下,文件名根据当前时间自动生成
from xbot import win32
def main(args):
win32.element._win32_element_cache.screenshot('D:\\')
示例2:
对win32元素进行截图,并将结果保存到D盘根目录下,文件名为 123.png
from xbot import win32
from . import package
def main(args):
wnd = win32.get_by_selector(package.selector('窗口_QQ'))
win32_element = wnd.find(package.selector('QQ号码'))
win32_element.screenshot('D:\\', filename='123.png')
screenshot_to_clipboard
对win32元素截图,并将截图添加到剪切板中
screenshot_to_clipboard(self)
参数:
- 无
返回值:
- 无
示例1:
对win32元素截图,并将截图添加到剪切板中
from xbot import win32
from . import package
def main(args):
wnd = win32.get_by_selector(package.selector('窗口_QQ'))
win32_element = wnd.find(package.selector('QQ号码'))
win32_element.screenshot_to_clipboard()
get_bounding
获取win32元素边框信息
get_bounding(self, to96dpi = True)
参数:
- to96dpi:是否将获取的到元素边框信息转换为96dpi下的值,,默认值为
True
需要转换
返回值:
tuple
:返回一组win32元素边框信息, 如(‘x’, ‘y’, ‘width’, ‘height’)
示例1:
获取win32元素的边框信息,并将结果转为96dpi对应的值
from xbot import win32
from . import package
def main(args):
wnd = win32.get_by_selector(package.selector('窗口_QQ'))
win32_element = wnd.find(package.selector('QQ号码'))
bound = win32_element.get_bounding(True)
get_all_select_items
获取win32下拉框元素的全部下拉选项
get_all_select_items(self)
参数:
无
返回值:
typing.list[str]
:返回当前win32下拉框元素全部下拉选项
示例1:
获取 demo center 窗口中的 下拉框 元素的全部下拉选项
from xbot import win32
def main(args):
hWnd = win32.get_by_selector('demo center')
element = hWnd.find('下拉框')
values = element.get_all_select_items()
get_selected_item
获取win32下拉框元素当前选中的全部下拉选项
get_selected_item(self)
参数:
无
返回值:
typing.list[str]
:返回当前win32下拉框元素当前选中的全部下拉选项
示例1:
获取 demo center 窗口中的 下拉框 元素的当前选中的全部下拉选项
from xbot import win32
def main(args):
hWnd = win32.get_by_selector('demo center')
element = hWnd.find('下拉框')
values = element.get_selected_item()
expand_tree_and_select_node
(SAP)扩展树以显示目标节点,然后选中目标节点
expand_tree_and_select_node(self, text_path)
参数:**
text_path
:填写目标节点的位置路径,如 SAP 菜单/会计核算/控制
返回值:
- 无
示例1:
选中指定的树节点(SAP 菜单/会计核算/控制**)
import xbot
from xbot import print, sleep
from .import package
def main(args):
window = xbot.win32.get('SAP 轻松访问')
saptree = window.find('树_SAPTableTreeControl1')
saptree.expand_tree_and_select_node('SAP 菜单/会计核算/控制')
get_table_cell_by_rownum_and_columnnum
(SAP)获取表格指定位置的单元格元素
get_table_cell_by_rownum_and_columnnum(self, row_num, column_num)
参数:
row_num
:指定行号, 行号从1开始column_num
:指定列号, 列号从1开始
返回值:
SAPElement
:返回获取到的单元格
示例1:
获取表格 (第4行,第 2列) **的单元格值
import xbot
from xbot import print, sleep
from .import package
def main(args):
window = xbot.win32.get('来自用户组 /FSCMA/IS 的查询:初始屏幕')
gridview = window.find('数据表格(网格视图)_SAPGUIGridViewCtrl1')
cell = gridview.get_table_cell_by_rownum_and_columnnum(4, 2)
cell_value = cell.get_text()
print(cell_value)
get_table_row_count
(SAP)获取数据表格总行数
get_table_row_count(self)
参数:
- 无
返回值:
int
:返回获取到的总行数
**
示例1:
import xbot
from xbot import print, sleep
from .import package
def main(args):
window = xbot.win32.get('来自用户组 /FSCMA/IS 的查询:初始屏幕')
gridview = window.find('数据表格(网格视图)_SAPGUIGridViewCtrl1')
count = gridview.get_table_row_count()
print(count)
get_table_column_count
(SAP)获取数据表格总列数
get_table_column_count(self)
参数:
- 无
返回值:
int
:返回获取到的总列数
**
示例1:
import xbot
from xbot import print, sleep
from .import package
def main(args):
window = xbot.win32.get('来自用户组 /FSCMA/IS 的查询:初始屏幕')
gridview = window.find('数据表格(网格视图)_SAPGUIGridViewCtrl1')
count = gridview.get_table_column_count()
print(count)