Facebookで問題を解決するためにSikuliを使用する特殊なケース

しばらく前、Facebookはユーザーの写真を保存するためにNFSベースのソリューションの使用を開始しました。 毎週25TBを占有し、ピーク時の1秒あたり55万枚以上の画像を配信する約2億2,000万の新しいファイルの圧力に対処するのに役立ちます[1] 。 1つのアルバムにアップロードされるファイルの最大数が60から200に増加し、ユーザーが喜ぶようになりました。



プライバシー設定の存在と、Picasaの空き領域が過去数年間の傑作によって安全に食い尽くされたという事実により、私と一部の友人はFacebookを写真の保存場所として使用しようとしました。



しかし、実際には、このサービスのいくつかの不便さが明らかになりました。最も不愉快なのは、多くの写真を読み込んだ後にアルバムを削除できないことです。 この記事は、この問題の影響を受け、すばらしいクロスプラットフォームの視覚自動化ツールSikuliを使用する別の例に興味があるすべての人を対象としています。





問題の本質



レプリケーションシナリオは次のようなものでした。



バグレポートは1か月以上前に送信されましたが、この記事の執筆時点では、他のユーザーの経験から判断して、この記事の関連性は失われていません。



ソリューションと実装を見つける



上記の状態でアルバムから写真を削除する唯一の方法は、ビューポートで「この写真を削除」リンクを使用することでした。 この方法で200枚の写真を手動で削除するのは楽しいアクティビティではありません。



良い記事のzodiak [2]KL7 [3]は、Sikuliの使用に影響を与えました。



簡単に言うと、Sikuliは、画像(スクリーンショット)を使用してグラフィカルユーザーインターフェイスを自動化するための視覚的な技術と言えます。 Sikuliの現在の実装には、JythonのビジュアルスクリプトAPIであるSikuli Scriptと、スクリーンショットを使用してスクリプトを作成するための統合開発環境であるSikuli IDEが含まれています。 Sikuliスクリプトを使用すると、内部APIを使用せずに画面に表示されるすべてを自動化できます。 Webページ、Windows / Linux / Mac OS Xで実行されるアプリケーション、およびエミュレーターで実行されるiPhoneアプリケーションをプログラムで制御できます。



突然、アクションを自動化するためのシンプルなスクリプトが「コンパイル」され、Sikuli GUIで15分間デバッグされました。そのほとんどは、ドキュメントに精通し、Facebook Webページの要素を一意に特徴付ける最適な視覚パターンを検索しました。



ソースコードのスクリーンショット



スクリーンショットは、ソースにグラフィックが含まれるSikuli構文の特性によるものです。



左側のアルバム写真にのみ表示される、額縁の上部と左側の空きスペースがある11行目に注意してください。 Sikuliは画面のパターンを左上隅から検索して認識するため、この場合、アルバムの左上の最初の画像が選択されていることに注意してください。



見つかった画像のマウスクリック機能click()は、指定された領域の幾何学的中心でクリックを実行します。 スクリプト内の目的のパターンの領域を増やすことにより、同様のインターフェース要素での誤認識の可能性を減らすことができます。



また、ドキュメントでは、 MinTargetSizeパラメーターの微調整を使用してスクリプトの速度を上げることができることを示しています。



from org.sikuli.script.natives import Vision Vision.setParameter("MinTargetSize", 6) #  , , 6 -   . Vision.setParameter("MinTargetSize", 18) #  ,  18 -  .
      
      







作業実演





英語のキャプションは、偉大で力強いものを所有していない人々のために挿入されます。



ここ からスクリプトダウンロードできます

NB! ほとんどの場合、ブラウザ名、キーボードショートカット、および環境のコマンド間の待機時間を変更する必要があります。



興味深いことに、GUIからディスクへのスクリプトは、*。png画像、Pythonのソース、およびコードを強調表示するためのCSSが組み込まれたHTMLページを含むフォルダーまたはzipアーカイブ(実行可能形式にエクスポートした場合)に保存されます。ネストされたグラフィック。



おわりに



Sikuliは、この記事を書く時間を節約し、刺激を与えながら、おそらく最も洗練された方法ではなく、非常に効果的な方法で問題を解決することができました。



プロジェクトhttp://sikuli.orgの公式Webサイトで、Linux、Windows、およびMac OS X用のSikuliの詳細をダウンロードしてインストールできます。



All Articles