LoginSignup
8
10

More than 5 years have passed since last update.

SikuliX をOpenJDKで動かす

Last updated at Posted at 2019-04-17

はじめに

簡単な自動化に利用できる、Raiman氏のSikuliXをOpenJDKで動かす方法です

環境

環境構築

  • JDKを展開します

    • OpenJDK 11 の場合
mkdir "%SystemDrive%\java"
cd "%SystemDrive%\java"
powershell.exe Invoke-WebRequest -Uri "http://ftp.hans-support.de/pub/hans/misc/packer/unz552xN.exe" -OutFile "%SystemDrive%\java\unz552xN.exe"
powershell.exe Invoke-WebRequest -Uri "https://download.java.net/java/GA/jdk11/9/GPL/openjdk-11.0.2_windows-x64_bin.zip" -OutFile "%SystemDrive%\java\openjdk-11.0.2_windows-x64_bin.zip"
unz552xN.exe x unzip.exe
unzip.exe openjdk-11.0.2_windows-x64_bin.zip
  • OpenJDK 12 の場合
mkdir "%SystemDrive%\java"
cd "%SystemDrive%\java"
powershell.exe Invoke-WebRequest -Uri "http://ftp.hans-support.de/pub/hans/misc/packer/unz552xN.exe" -OutFile "%SystemDrive%\java\unz552xN.exe"
powershell.exe Invoke-WebRequest -Uri "https://download.java.net/java/GA/jdk12.0.1/69cfe15208a647278a19ef0990eea691/12/GPL/openjdk-12.0.1_windows-x64_bin.zip" -OutFile "%SystemDrive%\java\openjdk-12.0.1_windows-x64_bin.zip"
unz552xN.exe x unzip.exe
unzip.exe openjdk-12.0.1_windows-x64_bin.zip
  • SikuliXをダウンロードします

    • SikuliX 1.1.4
mkdir "%SystemDrive%\sikulix"
cd "%System Drive%\sikulix"
powershell.exe Invoke-WebRequest -Uri "https://repo1.maven.org/maven2/org/python/jython-standalone/2.7.1/jython-standalone-2.7.1.jar" -OutFile "%SystemDrive%\sikulix\jython-standalone-2.7.1.jar"
powershell.exe Invoke-WebRequest -Uri "https://repo1.maven.org/maven2/org/jruby/jruby-complete/9.2.0.0/jruby-complete-9.2.0.0.jar" -OutFile "%SystemDrive%\sikulix\jruby-complete-9.2.0.0.jar"
powershell.exe Invoke-WebRequest -Uri "https://raiman.github.io/SikuliX1/sikulix.jar" -OutFile "%SystemDrive%\sikulix\sikulix.jar"

起動バッチを書く

  • OpenJDK 11 の場合
sikulix/exec_sikuli_j11.cmd
@echo off
:exec_sikulix
SET PATH="%PATH%;%SystemDrive%\java\jdk-11.0.2\bin"
SET JAVA_HOME="%SystemDrive%\java\jdk-11.0.2"
SET JAVABIN="%SystemDrive%\java\jdk-11.0.2\bin\java.exe"
%JAVABIN% --illegal-access=warn -jar "%SystemDrive%\sikuli\sikulix.jar" -c 
pause
  • OpenJDK 12 の場合
sikulix/exec_sikuli_j12.cmd
@echo off
:exec_sikulix
SET PATH="%PATH%;%SystemDrive%\java\jdk-12.0.1\bin"
SET JAVA_HOME="%SystemDrive%\java\jdk-12.0.1"
SET JAVABIN="%SystemDrive%\java\jdk-12.0.1\bin\java.exe"
%JAVABIN% --illegal-access=warn -jar "%SystemDrive%\sikuli\sikulix.jar" -c 
pause

使って見る

起動させると何やら警告が出ますが
javax.swing.plaf.basic.BasicTabbedPaneUI
が推奨さてないことと将来的に使用できなくなることに対する警告ですので、とりあえずスルーしていいです

Warning: Nashorn engine is planned to be removed from a future JDK release
WARNING: An illegal reflective access operation has occurred
WARNING: Illegal reflective access by org.sikuli.ide.CloseableModernTabbedPaneUI (file:/C:/sikuli/sikulix.jar) to constructor javax.swing.plaf.basic.BasicTabbedPaneUI$Actions(java.lang.String)
WARNING: Please consider reporting this to the maintainers of org.sikuli.ide.CloseableModernTabbedPaneUI
WARNING: Use --illegal-access=warn to enable warnings of further illegal reflective access operations
WARNING: All illegal access operations will be denied in a future release

スクリプトのIDEは特に変わりません(過去の記事を参照してください)

スクリーンショット 2019-04-17 15.04.53.png

IDEの中では相変わらず画像が展開されます

test.sikuli.py
# -*- coding: utf-8 -*-
import time,re,sys
popup(u"SikuliX 1.1.4 ScriptTest !!")
try:
    if find("1555404574057.png"):
        print u"エクスプローラを閉じましょう"
except Exception, e:
    print u"例外発生", e.arg[0]
except FindFailed:
    print u"検索失敗"

おまけ : jython-standalone に selenium ライブラリを追加する

SikuliXからSeleniumを呼ぶ方法は2つあって、Sikulix\Extensionsの中にSelenium-standalone-server.jarをおいて、javaのクラスを呼ぶ方法と、jython pip でpythonのseleniumを追加する方法だ。
前者については、javaのseleniumのクラス名がわかる人向け。後者はPython使いの人向け。
ここでは、Python使いの人向けの方法、SikuliX IDEが起動することを確認してから、以下のバッチを叩く

  • OpenJDK 11 の場合
sikulix/install_jython_selenium_j11.cmd
@echo off
:install jython-standalone with selenium

SET PATH="%PATH%;%SystemDrive%\java\jdk-11.0.2\bin"
SET JAVA_HOME="%SystemDrive%\java\jdk-11.0.2"
SET JAVABIN="%SystemDrive%\java\jdk-11.0.2\bin\java.exe"

%JAVABIN% --illegal-access=warn -jar "%USERPROFILE%\AppData\Roaming\Sikulix\Extensions\jython-standalone-2.7.1.jar" -m ensurepip
%JAVABIN% --illegal-access=warn -jar "%USERPROFILE%\AppData\Roaming\Sikulix\Extensions\jython-standalone-2.7.1.jar" -m pip install requests
%JAVABIN% --illegal-access=warn -jar "%USERPROFILE%\AppData\Roaming\Sikulix\Extensions\jython-standalone-2.7.1.jar" -m pip install selenium
%JAVABIN% --illegal-access=warn -jar "%USERPROFILE%\AppData\Roaming\Sikulix\Extensions\jython-standalone-2.7.1.jar" -m pip install chromedriver
pause
  • OpenJDK 12 の場合
sikulix/install_jython_selenium_j12.cmd
@echo off
:install jython-standalone with selenium

SET PATH="%PATH%;%SystemDrive%\java\jdk-12.0.1\bin"
SET JAVA_HOME="%SystemDrive%\java\jdk-12.0.1"
SET JAVABIN="%SystemDrive%\java\jdk-12.0.1\bin\java.exe"

%JAVABIN% --illegal-access=warn -jar "%USERPROFILE%\AppData\Roaming\Sikulix\Extensions\jython-standalone-2.7.1.jar" -m ensurepip
%JAVABIN% --illegal-access=warn -jar "%USERPROFILE%\AppData\Roaming\Sikulix\Extensions\jython-standalone-2.7.1.jar" -m pip install requests
%JAVABIN% --illegal-access=warn -jar "%USERPROFILE%\AppData\Roaming\Sikulix\Extensions\jython-standalone-2.7.1.jar" -m pip install selenium
%JAVABIN% --illegal-access=warn -jar "%USERPROFILE%\AppData\Roaming\Sikulix\Extensions\jython-standalone-2.7.1.jar" -m pip install chromedriver
pause

pipの動作が終わったら、SikuliX IDEを起動し直す、起動しなおしたら、pythonでseleniumを呼ぶ手順で以下のようテストを書く

スクリーンショット 2019-04-18 16.20.30.png

test2.sikuli.py
# -*- coding: utf-8 -*-
import time,re,sys
from selenium import webdriver

driver = webdriver.Chrome()
driver.get('https://www.google.com/')
time.sleep(5)

search_box = driver.find_element_by_name("q")
search_box.send_keys('ChromeDriver')
search_box.submit()
time.sleep(5)

driver.quit()

最後に

特に問題なくOpenJDKでSikuliXを動作させることができました。OracleJDKが有償化されても、SikuliXは問題なさそうです。
参考までに。

8
10
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
10