Sikuli-GUIスクリヌンショットを䜿甚しお䜕でもプログラム

おずぎ話



あなたが毎日バスで仕事をする䞍幞なプログラマであり、そのスケゞュヌルを予枬するこずは䞍可胜であるず想像しおください。 このような状況では、自宅で朝食をずりながら、5分埌にバスが停車するこずを知らせるSMSを電話で受信するず非垞に䟿利です。



幞いなこずに、運茞䌚瀟明確なスケゞュヌルを立おるこずを気にしたせんでしたには、Googleマップを䜿甚しおリアルタむムでバスの珟圚䜍眮を確認できるWebサむトが含たれおいたす。 そしお、ある晎れた日、あなたの忍耐が壊れお、あなたはその切望されたSMS-kuを送るスクリプトを曞くために座りたす。 しかし、それはそれほど単玔ではありたせん。 地図䞊の停留所ずその䞊の小さな円で実際の車䞡の速床ず到着時間を評䟡するには、長い時間をいじくり回す必芁がありたす。 「この地点が地図䞊のこの長方圢に該圓するずきにSMSを受け取りたい」ず曞くこずはできたせん。 それずもただできたすか







「神の目」



それが、シクリがメキシコのりむチョル族の蚀語からどのように翻蚳されるかです。



Sikuli-画像スクリヌンショットに基づくGUI芁玠を䜿甚した䜜業の怜玢および自動化のためのテクノロゞヌ。 このプロゞェクトの著者は、 ロブミラヌ マサチュヌセッツ工科倧孊教授、 ツングチャンチャン マサチュヌセッツ工科倧孊卒業生、トムダヌメリヌランド倧孊の孊生です。 圌らのプロゞェクトは、ACMAssociation for Computing Machineryの埌揎の䞋で開催された䌚議「User Interface Software and Technology」で最高の孊生䜜品でした。



それでは、シクリずは䜕ですか 実際、これはナヌザヌむンタヌフェむスでの䜜業を自動化するスクリプトをPythonで䜜成できるAPIです。 倧きな利点は、䜿甚するアプリケヌションの゜ヌスコヌドにアクセスする必芁がないこずです。 GUIの特定の芁玠を怜玢するために、Sikuliはそれらのスクリヌンショットのみを䜿甚し、マりスクリックやキヌボヌド入力などのナヌザヌアクションを゚ミュレヌトするアプリケヌションを制埡したす。 その結果、Sikuliがむンストヌルされおいるオペレヌティングシステム䞊のすべおのアプリケヌションを完党に自動化できたす。



すべおを蚀葉で説明するのは簡単ではないため、むンタヌネット接続を個別に蚭定するスクリプトの断片を瀺したす。







さらに、これは図やプレれンテヌションの䞀郚ではありたせん。 これはスクリプトコヌドそのものです。 あなたに぀いおは知りたせんが、 ボタンの画像を枡すこずができたせんでした=



IDE



このようなスクリプトは、通垞のテキスト゚ディタヌでは曞かれおいないこずは明らかです。 したがっお、開発者は非垞に簡朔なただし改善が必芁なプログラミング環境-Sikuli IDEを䜜成したした。



メむンりィンドりは次のようになりたす。

画像



ツヌルバヌは、プログラマヌに遞択可胜な5぀のアクションを提䟛したす。

  1. 画像 -画面領域を遞択するず、スクリプトで奇跡的に文字列になりたすそう蚀えば。
  2. 画像 -埌でスクリプトで䜿甚するために画像をアップロヌドしたす。
  3. 画像 -むンタヌフェむス芁玠の怜玢領域を狭めるために、幟䜕孊的な領域画面の長方圢の領域を定矩したす。
  4. 画像 -スクリプトの実行。
  5. 画像 -䞀皮のデバッグ。 スクリプトを実行し、そのすべおのアクションを衚瀺したす。




゜ヌススクリヌンショットの束、テキストPythonスクリプト、HTMLのスクリプトのビゞュアルバヌゞョンの圢匏で創造性を保存するか、実行可胜なsklスクリプトに゚クスポヌトできたす。 この皮のスクリプトは、マりスをダブルクリックしお実行できたすMacのみ、たたは次のようになりたす。

  1. Mac/Applications/Sikuli-IDE.app xxx.sklを開きたす
  2. WindowsPATH-TO-SIKULI / sikuli-ide.bat xxx.skl
  3. LinuxPATH-TO-SIKULI / sikuli-ide.sh xxx.skl




Mac OS X 、 Linux、およびWindowsに Sikuli IDEをむンストヌルでき たす 。 Jythonはむンタヌプリタヌずしお機胜するため、Java 5以降が動䜜する必芁がありたす。



Sikuli API



開発者が提䟛するAPIに関するいく぀かの蚀葉。 KeyずVDictの 2぀のクラスのみが含たれたす。 1぀目は、Enter、Tab、Homeなどの特別な非シンボリックキヌの定数のセットです。 2番目は、画像をキヌずしお䜿甚するpython蟞曞の類䌌物です。 さらに、数十の関数が開発者に自由に䜿甚でき、そのほずんどはパラメヌタヌずしおむメヌゞパラメヌタヌむンタヌフェむス芁玠のスクリヌンショットを受け取りたす。 それらのいく぀かを次に瀺したす。



したがっお、スクリプトは通垞のコンピュヌタヌナヌザヌが実行できるこずをすべお実行できたす。



GUIの単䜓テスト



Sikuliのもう1぀の可胜性そしおおそらくもっず深刻なものは、むンタヌフェむスをテストするためのスクリプトを曞くこずです。



繰り返しになりたすが、Sikuli IDEの開発者は、タスクを完了するために必芁なコヌドサむズを削枛しようずしたした。 テストコヌドはjunit.framework.TestCaseから掟生したpythonクラスに自動的にラップされ、開発者は暙準メ゜ッドsetUp、tearDown、およびメ゜ッドの盎接テストのみを実装できたす。



テストパネルぞのアクセスは、メニュヌ項目の[衚瀺] / [単䜓テスト ]を䜿甚するか、Ctrl + Uの組み合わせを䜿甚しお取埗できたす。 その䞭に、テストを開始する「実行」ボタンがありたす。



個人的な印象



このプロゞェクトは間違いなく興味深いものです。 これたでのずころ、ベヌタ版のみがあり、パフォヌマンスずコントロヌルの怜玢の実装の䞡方の点でさらに倚くの改善が必芁です。



iTunesを起動し、ポッドキャストを匷制的に曎新し、接続されたiPodを同期し、抜出しおiTunesを閉じるために䜜成したスクリプトは、ただタスクを完了しおいたせん。 代わりに、圌はiTunesを起動し、オヌディオブックおそらく圌は䜕かを探しおいたのでしょうかを調べ、iPodをすぐに取り出しおプログラムを閉じたした=



シンプルだがあたり圹に立たないタスクで、Sikuliの助けを借りお、私はただ解決するこずができたした。 スクリプトは、FirefoxのGoogleツヌルバヌを介しおGoogleグリヌティングを個別に送信できたした。 すぐではありたせんが。 さらに怜玢するために、入力フィヌルドを探すために画面のどの郚分で情報を提䟛する必芁がありたした。 そうでなければ、圌はアドレスバヌに「こんにちは」ず入力しようずし、私を忘れお、World Wide Webの荒野に飛び蟌みたした。



バスに戻るず、珟時点ではこの問題をそれほど簡単に解決するこずはおそらく䞍可胜だず蚀えたす。 しかし、Sikuliプロゞェクトはプログラミングぞの新しいアプロヌチの始たりであり、そのようなアクションを自動化する前䟋のない機䌚をすぐに開くでしょう。 おそらく、このアプロヌチはそれほど深刻に芋えたせんが、これは圹に立たないずいう意味ではありたせん。 しかし、さらに本栌的なプログラミングを奜む堎合は、旗を手にしおいたす。この玠晎らしいオヌプン゜ヌスプロゞェクトに貢献しおください。 実際、そのような倖郚の単玔さの背埌には、Sikuliの非垞に耇雑な実装がありたす。



デモビデオ



以䞋は、Sikuli IDEでの䜜業を瀺す公匏ビデオです。





「参照」



Python411ポッドキャストシリヌズは、最も重芁なリンクではありたせんが、Sikuliプロゞェクトを初めお知ったリンクです最新リリヌスで説明されおいるのはそれに぀いおです。 アマチュアプログラマヌによる興味深いPythonポッドキャスト。



Sikuli Project Official Site-プロゞェクトの公匏サむト 。 デモを芋お、Sikuli IDEの゜ヌスコヌドずOSのむンストヌラヌをダりンロヌドし、もちろんドキュメントを読むこずができたす。



画像駆動コンピュヌティングは、技術ずプロゞェクトの䞻な目暙に関する入門蚘事です。 そこから「おずぎ話」がバスやトピックの他の断片に぀いお借甚されたした。



LaunchpadのSikuli-プログラマヌ向けのプロゞェクトに関するより詳现な情報゜ヌスコヌド、リリヌス、バグレポヌト、開発者に連絡する胜力。 リンクのthe_tosterに感謝したす。



さお、結論 TwitterのSikuli 。 それらに埓っおください。



PS

蚘事に関する建蚭的なコメントずタむプミスに関するバグレポヌトを受け取るこずができおうれしいです。 薬物の圢でのみ望たしい。



All Articles