python+sikuli 图形操作脚本编写

1、环境准备

安装 jpype 包,安装方式 pip install jpype1

安装jdk包并配置环境变量,最少安装jdk1.8

2、代码块解析及使用

sikulix.jar 文件:
通过图形操作主要是启动这个jar包来操作,此文件为必须文件
下载sikuli jar包
链接:https://pan.baidu.com/s/1jpHyeq5ume5GWrJwYqRi2Q
提取码:bsii

sikuli_script.py 文件:
主要为封装调用sikuli jar包通过图形操作的方法,需要进行初始化后再使用

import os
import jpype
from jpype import *
from selenium import webdriver


class SikuliOperate(object):
    def __init__(self):
        try:
            # 获取环境变量中jdk路径
            jvmPath = jpype.getDefaultJVMPath() 
            # 启动sikuli jar包
            jpype.startJVM(jvmPath, "-ea", "-Djava.class.path=%s" % 'sikulix.jar')
            Screen = JClass("org.sikuli.script.Screen")  # 调用sikuli
            self.screen = Screen()
        except Exception as e:
            print(str(e))

    def sikuli_click(self, image_path):
        """
        通过图片点击
        :param image_path:  图片路径
        :return:
        """
        try:
            self.screen.click(image_path)
        except Exception as e:
            print(str(e))

    def sikuli_send_keys(self, image_path, text):
        """
        获取指定组件并输入内容
        :param image_path: 图片路径
        :param text: 内容
        :return:
        """
        try:
            self.screen.type(image_path, text)
        except Exception as e:
            print(str(e))

    def sikuli_double_click(self, image_path):
        """
        双击组件
        :param image_path: 图片路径
        :return:
        """
        try:
            self.screen.doubleClick(image_path)
        except Exception as e:
            print(str(e))

    def sikuli_right_click(self, image_path):
        """
        右击
        :param image_path: 图片路径
        :return:
        """
        try:
            self.screen.rightClick(image_path)
        except Exception as e:
            print(str(e))

    def sikuli_drag_drop(self, image_path1, image_path2):
        """
        拖拽组件
        :param image_path1: 拖拽组件图片路径
        :param image_path2: 拖拽后移动位置
        :return:
        """
        try:
            self.screen.dragDrop(image_path1, image_path2)
        except Exception as e:
            print(str(e))

    def sikuli_shutdowm(self):
        """
        关闭sikuli
        :return:
        """
        try:
            jpype.shutdownJVM()
        except Exception as e:
            print(str(e))


if __name__ == "__main__":
    driver = webdriver.Chrome(executable_path="D:\\chromedriver.exe")
    driver.get("https://mars-test.myscrm.cn/")
    driver.maximize_window()
    current_path = os.getcwd()
    so = SikuliOperate()
    so.sikuli_drag_drop(os.path.join(current_path, "image_package", "1638787671424.png"),
                        os.path.join(current_path, "image_package", "1.png"))
    # # so.sikuli_click(r"D:\testgit\yk-ui-baseframe\myweb\tools\sikuli\sikuli.sikuli\1638787711741.png")
    # so.sikuli_send_keys(r"D:\testgit\yk-ui-baseframe\myweb\tools\sikuli\sikuli.sikuli\1638787711741.png","f-20211122-optimization")
    # so.sikuli_click(r"D:\testgit\yk-ui-baseframe\myweb\tools\sikuli\sikuli.sikuli\1638787812618.png")
    so.sikuli_shutdowm()
    driver.quit()

3、使用注意事项

  • 执行脚本时页面不能有遮挡,不然会点不到对应元素
  • 执行UI脚本不能使用非页面模式来执行
  • 不能多线程同时执行
  • 建议在web难定位或元素无法定位时使用
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值