表題の通りです。
先に解決策から:
# RSelenium純正のSwitchはwebdrvierAPIの仕様変更で機能しなくなってる。これで対応
sel_window_switch <- function (remDr, windowId) {
qpath <- sprintf("%s/session/%s/window", remDr$serverURL,
remDr$sessionInfo[["id"]])
remDr$queryRD(qpath, "POST", qdata = list(handle = windowId))
}
@johndharrison
https://github.com/ropensci/RSelenium/issues/143
さんのコードを引用させて頂きました。感謝感謝。
使い方は見ての通りです。
この関数にremDrとwindowIDを渡すと、ちゃんとWindowを繰り替えてくれますよ!!
ウィンドウハンドラの扱いはこちらを参考にどうぞ:
# ウィンドウのハンドラ一覧。
# 殆どの場合クロール実行時は[[1]]:メイン [[2]]:ポップアップになると思います。
window_hnd <- remDr$getWindowHandles()
# ウィンドウ切り替え。[[]] 参照に注意
sel_window_switch(remDr, window_hnd[[2]])
なんでこうなるの?
webdriver 周辺でw3c準拠にAPI仕様の見直しが進んでまして、
残念ながら我らがRSeleniumがそれに追いつけていないみたいです。
とはいえ自在にスクリプトを送信出来る仕様になってますので、諸々対応していく事は可能なのですね。
偉大な先人たちに感謝しながらWebスクレープがはかどります。
(他の解決策としては古いchromiumを使うなどの手もありますが、あまりオススメしません)
Rで書くの本当にラクだな...
次回はp_load(seleniumpipes)とかやろうと思ってます。
dplyr 構文でselenium触れちゃうのです。