Python3+Sikuli环境搭建与项目实战

环境搭建

python+sikuli环境搭建

注意:适用于62位windows7系统,32位只能作参考

1.下载sikuli的jar包

下载地址:https://launchpad.net/sikuli

我使用的版本为:sikulixsetup-1.1.2.jar

2.安装sikuli环境

在D盘新建一个目录sikuli,将sikulixsetup-1.1.2.jar复制到该目录中,双击sikulixsetup-1.1.2.jar文件,

运行该jar包如下图所示,点击 是

勾选 Pack2 即安装 sikulix 的 api 包,点击 Setup Now

点击 确认窗口的 是

 

安装完成后,sikuli 目录中会自动生成一个 sikulixapi.jar 包,这是以后我们 Python 脚本要使

用的包,后续需要引用此包

 

3.下载 JPype1(调用 Java 程序的 Python 第三方库)

官方下载地址:https://pypi.org/project/JPype1/

4.安装 JPype1 第三方库

离线安装方式(推荐):

将 JPype1-0.6.3-py3.5-win-amd64.egg.rar 压缩包下载到本地

下载地址:链接:https://pan.baidu.com/s/1Jy1hfcLITZsjvnZDtMsRfw  提取码:1p3g 

1)先将 JPype1-0.6.3-py3.5-win-amd64.egg.rar 包解压到 Python35\Lib\site-packages 目录中(即

Python 安装目录)

2)再用记事本修改 easy-install.pth 文件,末尾换行加入:./jpype1-0.6.3-py3.5-win-amd64.egg

3)重新进入 Python 命令行模式,输入 import jpype 没报错即表示成功

在线安装方式:

Python使用jpype:

a) 导入jpype

import  jpype

b) 下面是一些操作(这个是调用java基本应用)

from jpype import *
import os
def pjava():
    print getDefaultJVMPath()             #这个是java的默认路径
    #启动虚拟机
    if not isJVMStarted():                #判断java虚拟机是否启动
        startJVM(getDefaultJVMPath())     #启动java
    pp = 'hello world'
    #调用java的类代码
    keystore = JClass('java.lang.System')  #调用java.System这个类
    keystore.out.println(pp)               #执行输出
    ShutdownJVM()                           #关闭虚拟机
if __name__ == "__main__":
    pjava()


c、启动 jvm

JPype 提供的 startJVM() 函数的作用是启动 JAVA 虚拟机,所以在后续的任何 JAVA 代码被调用前,必须先调用此方法启动 JAVA 虚拟机。

jpype.startJVM() 的定义

startJVM(jvm, *args)
·         

jpype.startJVM() 的参数

参数 1: jvm, 描述你系统中 jvm.dll 文件所在的路径,如“ C:\ProgramFiles\IBM\Java50\jre\bin\j9vm\jvm.dll ”。可以通过调用 jpype.getDefaultJVMPath() 得到默认的 JVM 路径。

参数 2: args, 为可选参数,会被 JPype 直接传递给 JVM 作为 Java 虚拟机的启动参数。此处适合所有合法的 JVM 启动参数,
————————————————

原文链接:https://blog.csdn.net/liuxingyu_21/article/details/23848053

5.JRE 环境配置

由于利用 Python 加载使用 Jar 包,所以需要开启 JVM(Java 虚拟机)环境,需要配置 Java

开发环境,环境配置请参见另外一份名为 Python+Eclipse+Selenium 环境搭建的说明文章

确认如:C:\Program Files\Java\jdk1.8.0_151\jre\bin\server 目录下有 jvm.dll 文件即可

----------------项目实战----------------

背景:

项目需要在微信端小程序覆盖UI自动化测试,使用appium成本太高,故考虑可否使用sikuli来做。

调研:

问题:Sikuli使用的是java编写,python无法直接调用其api

解决方法:JPype

JPype是一个能够让 python 代码方便地调用 Java 代码的工具,从而克服了 python 在某些领域(如服务器端编程)中的不足。

安装方法:pip install JPype

实例

'''

coding:utf-8

from jpype import *
import os
from selenium import webdriver
from utils.base import Base

DIR = os.path.dirname(os.path.abspath('.'))
IMG_PATH = DIR + '/sikuli/'

"""
启动浏览器,打开被测页面
"""
driver = webdriver.Chrome(executable_path=CHROME_DRIVER_PATH)
driver.maximize_window()
driver.get(Base.get_config_value('config', 'testEnv', 'url_3.0'))

"""
由于Sikuli使用的是java编写,python无法直接调用其api,必须使用JPype来调用
"""
"""
JPype是一个能够让 python 代码方便地调用 Java 代码的工具,从而克服了 python 在某些领域(如服务器端编程)中的不足。
"""

startJVM(r'C:\Program Files\Java\jre1.8.0_101\bin\server\jvm.dll', '-ea', r'-Djava.class.path=D:\sikuli\sikulixapi.jar') # 启动 JAVA 虚拟机
Screen = JClass('org.sikuli.script.Screen') # 返回一个Java类给Python
screen = Screen() # 实例化这个类
screen.click(IMG_PATH + '跳过.PNG') # 点击事件
screen.click(IMG_PATH + '地址簿.PNG')

driver.quit()
'''


链接:https://www.jianshu.com/p/fd53a0aacb25

https://www.cnblogs.com/moupan/articles/11161021.html

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章