1

Rでセレンを使用することに興味があります。さまざまなドキュメントがここWebDriver (Selenium 2) API documentationで説明されていることに注意してください。R を使用した実装に関する作業はありましたか。これにどのようにアプローチしますか。ドキュメントでは、セレンサーバーの実行について言及しており、Javascript を使用して API を照会できます。どんな助けでも大歓迎です。

4

4 に答える 4

1

Selenium には、 JsonWireProtocolを使用してアクセスできます。

まず、コマンドラインから次の方法で Selenium サーバーを起動します。

java -jar selenium-server-standalone-2.25.0.jar

新しい Firefox ブラウザーは、次のように開くことができます。

library(RCurl)
library(RJSONIO)
library(XML)

baseURL<-"http://localhost:4444/wd/hub/"
server<-list(desiredCapabilities=list(browserName='firefox',javascriptEnabled=TRUE))

getURL(paste0(baseURL,"session"),
       customrequest="POST",
       httpheader=c('Content-Type'='application/json;charset=UTF-8'),
       postfields=toJSON(server))

serverDetails<-fromJSON(rawToChar(getURLContent('http://localhost:4444/wd/hub/sessions',binary=TRUE)))
serverId<-serverDetails$value[[1]]$id

グーグルに移動します。

getURL(paste0(baseURL,"session/",serverId,"/url"),
       customrequest="POST",
       httpheader=c('Content-Type'='application/json;charset=UTF-8'),
       postfields=toJSON(list(url="http://www.google.com")))

検索ボックスのIDを取得する

elementDetails<-fromJSON(rawToChar(getURLContent(paste0(baseURL,"session/",serverId,"/element"),
       customrequest="POST",
       httpheader=c('Content-Type'='application/json;charset=UTF-8'),
       postfields=toJSON(list(using="xpath",value="//*[@id=\"gbqfq\"]")),binary=TRUE))
       )

elementId<-elementDetails$value

主題を検索する

rawToChar(getURLContent(paste0(baseURL,"session/",serverId,"/element/",elementId,"/value"),
       customrequest="POST",
       httpheader=c('Content-Type'='application/json;charset=UTF-8'),
       postfields=toJSON(list(value=list("\uE009","a","\uE009",'\b','Selenium api in R')))
       ,binary=TRUE))

検索 html を返す

googData<-fromJSON(rawToChar(getURLContent(paste0(baseURL,"session/",serverId,"/source"),
       customrequest="GET",
       httpheader=c('Content-Type'='application/json;charset=UTF-8'),
       binary=TRUE
       ))
       )

提案されたリンクを取得する

gxml<-htmlParse(googData$value)
urls<-unname(xpathSApply(gxml,"//*[@class='l']/@href"))

セッションを閉じる

getURL(paste0(baseURL,"session/",serverId),
       customrequest="DELETE",
       httpheader=c('Content-Type'='application/json;charset=UTF-8')
       )
于 2012-09-14T17:14:33.560 に答える
0

パッケージrelenium (Selenium for R) が最近開発され、rJava パッケージを通じてセレンをインポートします。主にウェブスクレイピング用に提案されています。免責事項: 私は開発者の 1 人です。

于 2013-11-25T22:52:35.043 に答える