ブラウザ操作 - stuncloud/UWSCR GitHub Wiki

BrowserControl

対応バージョン: 0.2.1

Devtools protocolを用いたブラウザ操作を行います
デバッグポート9222(変更可)でブラウザを起動します

すでにブラウザが起動していた場合は指定ポートが開かれているかを確認後以下のように動作します

  • 開いている→そのブラウザに再接続
  • 開いていない→エラー (ブラウザを閉じて再実行してください)
Browser = BrowserControl(ブラウザ定数 ,フィルタ=EMPTY, ポート=9222, ヘッドレス=FALSE)
変数名 種別 説明
ブラウザ定数 定数 必須 以下の定数を指定
BC_CHROME (1): Google Chromeを操作します
BC_MSEDGE (2): Microsoft Edgeを操作します
フィルタ 文字列 省略可 タイトルまたはURLにマッチするタブを操作します
省略時は1番目のタブ
ポート 数値 省略可 デバッグ待受用ポート
再接続する場合はポート番号が一致している必要があります
ヘッドレス bool 省略可 TRUEにした場合はブラウザを非表示で起動します
再接続時は無視されます
Browser オブジェクト 戻り値 Browserオブジェクト

ブラウザパスの指定

設定ファイルにて任意のパスを指定できます
nullの場合はパスを自動取得します
自動取得がうまく行かない場合にパスを指定してください
jsonなので\はエスケープ(\\)してください

{
  "browser": {
    "chrome": null,
    "msedge": null
  },
}

Browserオブジェクト

サンプルではBrowserオブジェクトをbrowserと表記します

プロパティ

browser.document

documentを示すElementオブジェクトを返します

Elementオブジェクト = browser.document

呼ぶ度にdocumentを再取得します
(DOMに変更があった等、再取得が必要になる場合がある)

browser.url

操作中のページのURLを返します

browser.source

HTMLソースを返します
(その時点のDOMツリーを返すため、HTMLソースファイルの内容とは異なる場合があります)

browser.pageid

操作中のページのIDを返します

メソッド

browser.windowid

対象ブラウザのウィンドウIDを取得します

id = browser.windowId()
変数名 種別 説明
id 数値 戻り値 ブラウザのID
取得に失敗した場合は-1

browser.navigate

指定したURIを開きます
ページ遷移が完了するまで最大10秒待機します

読込完了 = browser.navigate(uri)
変数名 種別 説明
uri 文字列 必須 開きたいサイトのURI
読込完了 bool値 戻り値 10秒待機しても読み込みが完了しない場合はFALSE

browser.reload

ページをリロードします
リロードが完了するまで最大10秒待機します

読込完了 = browser.reload(キャッシュ無視=FALSE)
変数名 種別 説明
キャッシュ無視 bool 省略可 TRUEならキャッシュを無視する(Shift+refreshと同等)
読込完了 bool値 戻り値 10秒待機しても読み込みが完了しない場合はFALSE

browser.wait

ページの読み込みが完了するまで待ちます
リンクをクリックした後などに使用します

読込完了 = browser.wait([タイムアウト = 10])
変数名 種別 説明
タイムアウト 数値 省略可 読み込み完了まで待機する時間(秒) デフォルト10秒
読込完了 bool値 戻り値 タイムアウトを過ぎても読み込み完了しない場合はFALSE

browser.close

操作中のタブを閉じます

browser.close()

browser.gettabs

タブ一覧を取得します

タブリスト = browser.getTabs([フィルタ])
変数名 種別 説明
フィルタ 文字列 省略可 タイトルかURLがマッチするタブのみ取得 (省略時はすべて)
タブリスト 二次元配列 戻り値 配列の各要素は更に以下の要素を持つ
0: タブのタイトル
1: タブのURL
2: タブのページID
for tab in browser.gettabs()
    print 'title : ' + tab[0]
    print 'url   : ' + tab[1]
    print 'pageid: ' + tab[2]
next

browser.newtab

新しいタブを開きそのタブのBrowserオブジェクトを返します

Browser = browser.newTab(uri)
変数名 種別 説明
uri 文字列 必須 開きたいURI
Browser オブジェクト 戻り値 Browserオブジェクト

browser.activate

操作対象タブをアクティブにします

browser.activate()

browser.execute

JavaScriptを実行します

戻り値 = browser.execute(スクリプト, [引数, 変数名])
変数名 種別 説明
スクリプト 文字列 必須 実行するJavaScript
引数 省略可 JavaScriptに渡す値
変数名 文字列 省略可 引数を受ける変数名
省略時は arg
戻り値 戻り値 スクリプトの実行結果
print browser.execute('3 + 5') // 8

// 変数名を渡さなかった場合argという変数が使える
// UObjectを渡した場合はJavaScript内でオブジェクトに変換される
print browser.execute('arg.a * arg.b', @{"a": 3, "b": 5}@) // 15

// 変数名を指定するとその変数名で引数にアクセスできる
print browser.execute('3 * hoge', 6, "hoge") // 18

Elementオブジェクト

属性値やプロパティの取得・変更

  • idやnameなどの属性値(アトリビュート)の取得及び変更
  • innerHTMLなどのプロパティの取得及び変更

属性値(アトリビュート)やプロパティの名前はcase sensitiveです
(大文字小文字まで一致する必要があります)
存在しない名前を指定した場合はNULLが返ります

element = browser.document.querySelector(selector)
// 属性値
print element.value
element.value = "hoge"
// プロパティ
print inner := element.innerHTML
element.innerHTML = "<p><#inner></p>" // innerHTMLをPタグで包む

Elementプロパティ

element.parent

親のElementオブジェクトを取得します

element = browser.document.querySelector(selector)
parent = element.parent

Elementメソッド

element.queryselector

CSSセレクタを指定しエレメントを取得します

エレメント = element.queryselector(セレクタ)
変数名 種別 説明
セレクタ 文字列 必須 エレメントを特定するCSSセレクタ
エレメント オブジェクト 戻り値 Elementオブジェクト
該当するエレメントがなかった場合はEMPTY
element = browser.document.querySelector("form")
child = element.querySelector('input[type="password"]')

element.queryselectorall

CSSセレクタに該当するすべてのエレメントを取得します

エレメント配列 = element.queryselector(セレクタ)
変数名 種別 説明
セレクタ 文字列 必須 エレメントを特定するCSSセレクタ
エレメント配列 配列 戻り値 Elementオブジェクトの配列
該当するエレメントがなかった場合は空配列
form = browser.document.querySelector("form")
inputs = form.querySelectorAll("input")
for input in inputs
    print input.type
next

element.focus

エレメントをフォーカスします

element.focus()

element.input

指定文字列を一文字ずつ入力します

element.input(文字列)
変数名 種別 説明
文字列 文字列 必須 エレメントに入力する文字列

element.clear

エレメントのvalueを空にします

element.clear()
element = browser.document.querySelector('input[type="text"]')
print element.value // 元の入力値
element.clear()
print element.value // 空になっている

element.setfile

ファイル選択(input[type="file"])に値を入力します

element.setfile(ファイルパス)
element.setfile(ファイルパス配列)
変数名 種別 説明
ファイルパス 文字列 必須 input[type="file"] に入力するファイルパス
ファイルパス配列 配列 必須 multipleが有効な場合配列指定で複数のパスを入力できる
element = browser.document.querySelector('input[type="file"]')
element.SetFile("hoge.jpg")

element.click

エレメントをクリックします

element.click()

element.select

チェックボックスやラジオボタンを選択状態にします

element.select()

element.execute

JavaScriptを実行します
$0で自身にアクセスできます

戻り値 = element.execute(スクリプト, [引数, 変数名])
変数名 種別 説明
スクリプト 文字列 必須 実行するJavaScript
引数 省略可 JavaScriptに渡す値
変数名 文字列 省略可 引数を受ける変数名
省略時は arg
戻り値 戻り値 スクリプトの実行結果
element = browser.document.querySelector('input[type="button"]')
element.execute('$0.onclick()') // エレメントのonclickを実行する
⚠️ **GitHub.com Fallback** ⚠️