Python +jpype+sikuli用法

Python 調用Sikuli -- Python

目錄
Sikuli簡介
簡要說明
環境設置
第一種 -- Jpype
第二種 -- Pyjnius
結論
目錄

Sikuli簡介

Sikuli是由MIT(麻省理工學院) 研究團隊發佈的一種圖形化編程技術(編程小白的福音),使用Sikuli你只需要會寫HelloWorld這種最基本的編程技能即可,用Sikuli不需要去寫出一行行復雜的代碼,而是用屏幕截圖的方式,用截出來的圖形元素組合出神奇的程序。

Sikuli官網:http://slides.sikuli.org/
API doc :http://nightly.sikuli.de/docs/index.html
Sikuli是開源的,源碼可在Github查看:https://github.com/sikuli/sikuli


簡要說明

由於Python不能直接調用Java的方法,需要藉助一些第三方的庫,目前我瞭解到的有Jython、Jpype、Pyjnius等,本篇文章只對Jpype和Pyjnius調用Java jar包進行簡單介紹,好了,it`s show time。

環境設置

這邊介紹兩種Python調用Sikuli的方法,前置條件:

必須已經配置過Java環境,Java環境安裝:https://blog.csdn.net/lb245557472/article/details/74625793
Python基礎環境已經安裝


第一種 – Jpype

首先安裝Jpype包:官網 打開命令行輸入 pip install JPype1 進行安裝,會提示安裝成功

如果安裝失敗可能是Windows缺少VCForPython27導致,需要安裝這個組件,下載鏈接: https://pan.baidu.com/s/1ILVxjb3K4hMvviCbefpfIw 提取碼: 7uri ;如果下載後還安裝不了,就只能下載Jpype1的壓縮包進行安裝了,下載安裝包後,找到文件所在的命令執行 pip install JPype1-0.6.3.tar.gz
安裝成功後下載sikuli的jar包,地址:https://raiman.github.io/SikuliX1/downloads.html,
打開鏈接,點擊下載:


3.將下載的jar包放入到合適的文件中,Jpype的環境已經可以了,你可以嘗試以一下,啓動桌面上的Chrome(運行代碼時確保桌面上Chrome的圖標沒有被其他窗口遮擋,要不然會報錯的)。
    from jpype import *
    
    # 需安裝VCForPython27
    # C:\Program Files\Java\jdk1.8.0_181\jre\bin\server\jvm.dll
    print getDefaultJVMPath()
    startJVM(getDefaultJVMPath(), "-ea", r"-Djava.class.path=F:\work\project\test\sikuli_test\sikulixapi.jar")
    java.lang.System.out.println("hello world")
    Screen = JClass("org.sikuli.script.Screen")
    screen = Screen()
    # r"F:\work\project\test\sikuli_test\imgs\Chrome.png" 你截取桌面上chrome圖標的圖片路徑
    screen.doubleClick(r"F:\work\project\test\sikuli_test\imgs\Chrome.png")
    shutdownJVM()


第二種 – Pyjnius

由於pyjnius依賴cython包,所以先進行安裝cython,打開命令行進行安裝cython
    pip install cython
1
然後安裝pyjinus
    pip install pyjnius
1
安裝完成後,啓動桌面上的Chrome進行驗證
    import os
    
    # 將jvm.dll 的路徑加入系統變量,兩者加任意一個即可,
    # 也可以將其配置到系統變量中,就不必每次運行腳本時設置了
    os.environ["path"] = r"C:\Program Files\Java\jdk1.8.0_131\jre\bin\server"
    os.environ["path"] = r"C:\Program Files\Java\jre1.8.0_131\bin\server"
    
    # 將sikuli的jar包引入到CLASSPATH中
    os.environ["CLASSPATH"] = r"F:\work\project\test\sikuli_test\sikulixapi.jar"
    from jnius import autoclass
    
    # 調用Java jar中的類
    Screen = autoclass("org.sikuli.script.Screen")
    s = Screen()
    s.doubleClick(r"F:\work\project\test\sikuli_test\imgs\Chrome.png")


具體sikuli的用法:http://doc.sikuli.org/sikuli-script-index.htmlpyjnius:https://pyjnius.readthedocs.io/en/latest/index.html


結論

Python 調用Sikuli歸根結底還是Python調用Java類,以上的是Python調用Java的兩個簡單應用,其實在我們用Python(selenium、appium)進行自動化的時候,會遇到無法識別的元素就可以運用上面的兩種方式進行操作(也可以操作文件上傳基於Python+selenium+sikuli,可參考上篇博客:https://blog.csdn.net/lb245557472/article/details/83928753),可以把sikuli作爲一個輔助工具來使用,不必安裝sikuli的環境儘可以調用,方便實用,不過不同的平臺可能圖片的識別率比較低。
————————————————

原文鏈接:https://blog.csdn.net/lb245557472/article/details/83957563

其他參考:https://blog.csdn.net/rolandluo/article/details/8256720

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