はじめに
簡単な自動化に利用できる、Raiman氏のSikuliXをOpenJDKで動かす方法です
環境
- Windows10 64bit
- Sikulix 1.1.4 (http://sikulix.com/)
- + Jython interpreter 2.7.1
- + JRuby interpreter 9.x
- OpenJDK(https://jdk.java.net/)
環境構築
-
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 の場合
@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 の場合
@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は特に変わりません(過去の記事を参照してください)
IDEの中では相変わらず画像が展開されます
# -*- 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 の場合
@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 の場合
@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を呼ぶ手順で以下のようテストを書く
# -*- 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は問題なさそうです。
参考までに。