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

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