概述

element接口主要是对win32元素的处理,如元素点击、输入框填写、复选框和下拉框操作已经元素属性值的获取和设置等

详情

parent

获取当前元素的父元素

parent(self)
参数:

返回值:

  • Win32Element:返回当前元素的父元素

示例1:
通过Chrome浏览器打开 百度 网页并返回和元素选择器 百度一下 匹配的元素对象,然后获取该对象的父对象

  1. def main(args):
  2. window = xbot.win32.get('记事本')
  3. win_element = window.find('菜单项目_文件F')
  4. parent_element = win_element.parent()

children

获取当前元素的所有子元素

children(self)
参数:

返回值:

  • List<Win32Element>:返回当前元素的所有子元素

示例1:
通过Chrome浏览器打开 百度 网页并返回和元素选择器 百度一下 匹配的元素对象,然后获取该对象的子对象

  1. def main(args):
  2. window = xbot.win32.get('记事本')
  3. win_element = window.find('菜单栏_应用程序')
  4. children_elements = win_element.children()

child_at

获取指定位置的子元素

child_at(self, index)
参数:

  • index:子元素的位置索引,从0开始计数

返回值:

  • Win32Element:返回指定位置的子元素

_
示例1:

  1. def main(args):
  2. window = xbot.win32.get('记事本')
  3. win_element = window.find('菜单栏_应用程序')
  4. child_element = win_element.child_at(0)


next_sibling

获取下一个并列的兄弟元素

next_sibling(self)
参数:

返回值:

  • Win32Element:返回下一个并列的兄弟元素

_
示例1:

  1. def main(args):
  2. window = xbot.win32.get('记事本')
  3. win_element = window.find('菜单项目_文件F')
  4. 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’:鼠标位置的垂直偏移量

返回值:

实列1:
获取 编辑文本编辑器 窗口并用鼠标左键点击 菜单项目文件F 元素,点击的同时按下 Alt

  1. from xbot import win32
  2. def main(args):
  3. wnd = win32.get('编辑_文本编辑器')
  4. win32_element = wnd.find('菜单项目_文件F')
  5. 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’:鼠标位置的垂直偏移量

返回值:

示例1:
获取 编辑文本编辑器 窗口并用鼠标左键双击 菜单项目文件F 元素

  1. from xbot import win32
  2. from . import package
  3. def main(args):
  4. wnd = win32.get('编辑_文本编辑器')
  5. win32_element = wnd.find('菜单项目_文件F')
  6. 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’:鼠标位置的垂直偏移量

返回值:


实列1:
获取 编辑文本编辑器 窗口并在 输入框 元素中输入 _helloworld

  1. from xbot import win32
  2. from . import package
  3. def main(args):
  4. wnd = win32.get('编辑_文本编辑器')
  5. win32_element = wnd.find('输入框')
  6. win32_element.input('helloworld', True, True, False, 1,
  7. anchor=('middleCenter', 100, 100))

实列2:
获取 编辑文本编辑器 窗口并在 输入框 元素中输入 回车_

  1. from xbot import win32
  2. from . import package
  3. def main(args):
  4. wnd = win32.get('编辑_文本编辑器')
  5. win32_element = wnd.find('输入框')
  6. win32_element.input('{enter}', True, False, True, 1,
  7. anchor=('middleCenter', 100, 100))


实列1:
获取 编辑文本编辑器 窗口并在 输入框 元素中输入 _helloworld

  1. from xbot import win32
  2. from . import package
  3. def main(args):
  4. wnd = win32.get('中国民生银行个人网上银行 - Internet Explorer')
  5. win32_element = wnd.find('民生银行_账号')
  6. win32_element.input('123456789', False)
  7. win32_element = wnd.find('民生银行_密码')
  8. 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’:鼠标位置的垂直偏移量

返回值:

示例1:
获取 编辑文本编辑器 窗口并使用剪切板输入往 输入框 元素中输入 _helloworld

  1. from xbot import win32
  2. from . import package
  3. def main(args):
  4. wnd = win32.get('编辑_文本编辑器')
  5. win32_element = wnd.find('输入框')
  6. win32_element.clipboard_input('helloworld', False, 1,
  7. 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’:悬停在右下角

返回值:

示例1:
获取 编辑文本编辑器 窗口并将鼠标悬停在 输入框_ 元素上

  1. from xbot import win32
  2. from . import package
  3. def main(args):
  4. wnd = win32.get('编辑_文本编辑器')
  5. win32_element = wnd.find('输入框')
  6. win32_element.hover(True, 1)

check

设置win32复选框是否选中

check(self, mode=’check’, delay_after=1)
参数:

  • mode:win32复选框的设置状态, 默认为check选中
    • ‘check’:选中
    • ‘uncheck’:取消选中
  • delay_after:执行成功后延迟时间, 默认延迟1s

返回值:

示例1:
获取 窗口_QQ 窗口并勾选 自动登录 复选框

  1. from xbot import win32
  2. from . import package
  3. def main(args):
  4. wnd = win32.get('窗口_QQ')
  5. win32_element = wnd.find('自动登录')
  6. 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 的项

  1. from xbot import win32
  2. from . import package
  3. def main(args):
  4. wnd = win32.get('窗口_QQ')
  5. win32_element = wnd.find('QQ号码')
  6. win32_element.click()
  7. win32_element = wnd.find('xxx')
  8. win32_element.select('helloword', 'fuzzy', 1)

示例3:
使用正则表达式匹配,设置win32下拉框选中项为内容是以h开头以d结尾的项

  1. from xbot import win32
  2. from . import package
  3. def main(args):
  4. wnd = win32.get('窗口_QQ')
  5. win32_element = wnd.find('QQ号码')
  6. win32_element.click()
  7. win32_element = wnd.find('xxx')
  8. 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

  1. from xbot import win32
  2. from . import package
  3. def main(args):
  4. wnd = win32.get('窗口_QQ')
  5. win32_element = wnd.find('QQ号码')
  6. win32_element.click()
  7. win32_element = wnd.find('xxx')
  8. win32_element.select_by_index(1, 1)

set_value

给win32元素设置值

set_value(self, value: str)
参数:

  • value:要设置给win32元素的文本值

返回值:

示例1:
设置win32元素的值为 helloword

  1. from xbot import win32
  2. from . import package
  3. def main(args):
  4. wnd = win32.get_by_selector(package.selector('窗口_QQ'))
  5. win32_element = wnd.find(package.selector('QQ号码'))
  6. win32_element.set_value('helloword')

get_attribute

获取win32元素的属性值

get_attribute(self, name: str)
参数:

  • name:win32元素的属性值

返回值:

  • str:返回win32元素的目标属性值

示例1:
获取win32元素属性 height 的值

  1. from xbot import win32
  2. from . import package
  3. def main(args):
  4. wnd = win32.get_by_selector(package.selector('窗口_QQ'))
  5. win32_element = wnd.find(package.selector('QQ号码'))
  6. height = win32_element.get_attribute('height')

get_all_attributes

获取win32元素的全部属性值

get_all_attributes(self)
参数:

返回值:

  • typing.List[typing.Tuple]:返回win32元素的全部属性名与属性值的组合列表如[(‘name’, ‘hello’), (‘height’, ‘100’)]

示例1:
获取桌面新建文本文档的全部属性值

  1. from xbot import win32
  2. def main(args):
  3. wHnd = win32.get_desktop()
  4. element = wHnd.find('新建文本文档')
  5. attributes = element.get_all_attributes()

get_text

获取win32元素的文本内容

get_text(self)
参数:

返回值:

  • str:返回win32元素的文本内容

示例1:
获取 文本框 中的文本内容

  1. from xbot import win32
  2. def main(args):
  3. wnd = win32.get('新建文本')
  4. win32_element = wnd.find('文本框')
  5. height = win32_element.get_text()


get_value

获取win32元素的详细信息

get_value(self)
参数:

返回值:

  • str:返回win32元素的详细信息

示例1:
获取win32元素的纤细信息

  1. from xbot import win32
  2. from . import package
  3. def main(args):
  4. wnd = win32.get_by_selector(package.selector('窗口_QQ'))
  5. win32_element = wnd.find(package.selector('QQ号码'))
  6. 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’:悬停在右下角

返回值

示例1:
模拟人工,平滑的将win32元素移动到 x:100,y:100 的位置

  1. from xbot import win32
  2. from . import package
  3. def main(args):
  4. wnd = win32.get_by_selector(package.selector('窗口_QQ'))
  5. win32_element = wnd.find(package.selector('QQ号码'))
  6. win32_element.drag_to(True, 'smooth', 100, 100, 1)

screenshot

对win32元素进行截图并保存

screenshot(self, folder_path, *, filename=None)
参数:

  • folder_path, 截图保存的路径
  • filename, 截图保存时的文件名, 可为空, 为空时会更具当前时间自动生成文件名

返回值:

示例1:
对win32元素进行截图,并将结果保存到D盘根目录下,文件名根据当前时间自动生成

  1. from xbot import win32
  2. def main(args):
  3. win32.element._win32_element_cache.screenshot('D:\\')

示例2:
对win32元素进行截图,并将结果保存到D盘根目录下,文件名为 123.png

  1. from xbot import win32
  2. from . import package
  3. def main(args):
  4. wnd = win32.get_by_selector(package.selector('窗口_QQ'))
  5. win32_element = wnd.find(package.selector('QQ号码'))
  6. win32_element.screenshot('D:\\', filename='123.png')

screenshot_to_clipboard

对win32元素截图,并将截图添加到剪切板中

screenshot_to_clipboard(self)
参数:

返回值:

示例1:
对win32元素截图,并将截图添加到剪切板中

  1. from xbot import win32
  2. from . import package
  3. def main(args):
  4. wnd = win32.get_by_selector(package.selector('窗口_QQ'))
  5. win32_element = wnd.find(package.selector('QQ号码'))
  6. 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对应的值

  1. from xbot import win32
  2. from . import package
  3. def main(args):
  4. wnd = win32.get_by_selector(package.selector('窗口_QQ'))
  5. win32_element = wnd.find(package.selector('QQ号码'))
  6. bound = win32_element.get_bounding(True)

get_all_select_items

获取win32下拉框元素的全部下拉选项

get_all_select_items(self)
参数:

返回值:

  • typing.list[str]:返回当前win32下拉框元素全部下拉选项

示例1:
获取 demo center 窗口中的 下拉框 元素的全部下拉选项

  1. from xbot import win32
  2. def main(args):
  3. hWnd = win32.get_by_selector('demo center')
  4. element = hWnd.find('下拉框')
  5. values = element.get_all_select_items()

get_selected_item

获取win32下拉框元素当前选中的全部下拉选项

get_selected_item(self)
参数:

返回值:

  • typing.list[str]:返回当前win32下拉框元素当前选中的全部下拉选项

示例1:
获取 demo center 窗口中的 下拉框 元素的当前选中的全部下拉选项

  1. from xbot import win32
  2. def main(args):
  3. hWnd = win32.get_by_selector('demo center')
  4. element = hWnd.find('下拉框')
  5. values = element.get_selected_item()

expand_tree_and_select_node

(SAP)扩展树以显示目标节点,然后选中目标节点

expand_tree_and_select_node(self, text_path)
参数:**

  • text_path:填写目标节点的位置路径,如 SAP 菜单/会计核算/控制

返回值:


示例1:
选中指定的树节点(
SAP 菜单/会计核算/控制**)

  1. import xbot
  2. from xbot import print, sleep
  3. from .import package
  4. def main(args):
  5. window = xbot.win32.get('SAP 轻松访问')
  6. saptree = window.find('树_SAPTableTreeControl1')
  7. 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列) **的单元格值

  1. import xbot
  2. from xbot import print, sleep
  3. from .import package
  4. def main(args):
  5. window = xbot.win32.get('来自用户组 /FSCMA/IS 的查询:初始屏幕')
  6. gridview = window.find('数据表格(网格视图)_SAPGUIGridViewCtrl1')
  7. cell = gridview.get_table_cell_by_rownum_and_columnnum(4, 2)
  8. cell_value = cell.get_text()
  9. print(cell_value)

get_table_row_count

(SAP)获取数据表格总行数

get_table_row_count(self)
参数:

返回值:

  • int:返回获取到的总行数

**
示例1:

  1. import xbot
  2. from xbot import print, sleep
  3. from .import package
  4. def main(args):
  5. window = xbot.win32.get('来自用户组 /FSCMA/IS 的查询:初始屏幕')
  6. gridview = window.find('数据表格(网格视图)_SAPGUIGridViewCtrl1')
  7. count = gridview.get_table_row_count()
  8. print(count)

get_table_column_count

(SAP)获取数据表格总列数

get_table_column_count(self)
参数:

返回值:

  • int:返回获取到的总列数

**
示例1:

  1. import xbot
  2. from xbot import print, sleep
  3. from .import package
  4. def main(args):
  5. window = xbot.win32.get('来自用户组 /FSCMA/IS 的查询:初始屏幕')
  6. gridview = window.find('数据表格(网格视图)_SAPGUIGridViewCtrl1')
  7. count = gridview.get_table_column_count()
  8. print(count)