Sikuliからクリップボード (ペーストボード) の内容を操作したかったので調べてみました。
Stack Overflowによると、Java AWT経由でクリップボードを操作すればよいみたいです。
クリップボードの取得
文字列の取得と文字列のセットのどちらの場合でも、まず始めにクリップボード自体を取得する必要があります。
from java.awt import Toolkit from java.awt.datatransfer import Clipboard toolkit = Toolkit.getDefaultToolkit() clipboard = toolkit.getSystemClipboard()
クリップボードから文字列を取得する
クリップボードの取得後に次のコードを実行するだけです。
from java.awt.datatransfer import DataFlavor contents = clipboard.getContents(None) text = contents.getTransferData(DataFlavor.stringFlavor)
クリップボードに文字列をセットする
クリップボードの取得後に次のコードを実行するだけです。
from java.awt.datatransfer import StringSelection clipboard.setContents(StringSelection(""), None)
サンプルコード
次のコードは、Chromeの一番左のタブから5つのタブからURLを抜き出し、その中のhttpsのものをクリップボードにセットします。
from java.awt import Toolkit from java.awt.datatransfer import Clipboard from java.awt.datatransfer import DataFlavor from java.awt.datatransfer import StringSelection app = App('Chrome.app') app.focus() win = app.window(0) win.type('1', KeyModifier.CMD) urls = [] for i in range(5): win.type('l', KeyModifier.CMD) win.type('c', KeyModifier.CMD) toolkit = Toolkit.getDefaultToolkit() clipboard = toolkit.getSystemClipboard() contents = clipboard.getContents(None) url = contents.getTransferData(DataFlavor.stringFlavor) if url[:8] == 'https://': urls.append(url) win.type(Key.RIGHT, KeyModifier.CMD | KeyModifier.ALT) clipboard.setContents(StringSelection('\n'.join(urls)), None)
0 件のコメント:
コメントを投稿
注: コメントを投稿できるのは、このブログのメンバーだけです。