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 件のコメント:
コメントを投稿
注: コメントを投稿できるのは、このブログのメンバーだけです。