2017-05-07 5 views
0

私は数時間の間、次のコード行に苦労していますが、まだ解決策に近づいていないようです。次のように私のコードは次のとおりです。RSeleniumを使用して要素テキストを取得

#create a list of all the question elements on the page 
questions <- remDr$findElements(using = 'xpath', "//div[@class='question-text']") 

#get the first question element in the list 
question <- questions[1] 

#get the text of the question element 
question$getElementText() 

私はRStudioを使用してデバッグする場合の質問 "リストは全て「質問」要素に正しく装着されているかのように、それが見えます。 'question'項目には、リストの最初の 'question'要素が正しく入力されます。しかし、質問要素内のテキストを取得することを意図したコードの次の行に多くのバリエーションは、すべてが次のエラーを与え、失敗するように見える:

Error in evalq({ : attempt to apply non-function 

エラーがの異なる部分から来ている可能性がありますコードは、しかし、非常にありそうもない、その行をコメントアウトすることは、他のすべてが完全に働いているように思える。

あなたとガールズが提供する可能性のあるヘルプについては、非常に感謝しています。私はRSeleniumを使ってRでプログラミングしています。他の環境でSeleniumを使用する経験は非常に限られていますが、おそらくわかるように、私はRには新しいものです。

あなたのご意見をお寄せいただきありがとうございます!

+0

はSOへようこそ。 Rタグの上にカーソルを置いてください。最小の再現可能な例を提供するように求められます。あなたの例は再現できません:コードを実行すると_エラーが発生します:オブジェクト 'remDr'が見つかりません_。 – lukeA

+0

謝罪ルーク、私は問題を説明するために最短の例を提供しようとしていたが、明らかに再現性のあるものを与えることを怠った。次回はもっとうまくやろうとします。 – thunderbuck88

+0

あなたが共有することができない内部ジョブリソースを削っていると述べていない限り、あなたが知的財産の盗難に従事しているかどうかを彼らが助けているかどうかを知るのに役立ちます。 – hrbrmstr

答えて

3

questionには、getElementTextという機能はありません。 webElementオブジェクトの代わりにlistオブジェクトです。あなたが必要とする[[の代わり[ - この例をチェックアウト:

library(RSelenium) 
rD <- rsDriver(port=4444L, browser = "phantomjs") 
remDr <- rD[["client"]] 
remDr$navigate(
    "http://stackoverflow.com/questions/43833649/get-element-text-using-rselenium") 
elems <- remDr$findElements(using = 'xpath', "//a") 
elem <- elems[1] 
class(elem) 
# [1] "list" 
elem$getElementText() 
# Error: attempt to apply non-function 

を今すぐ

elem <- elems[[1]] 
class(elem) 
# [1] "webElement" 
elem$getElementText() 
# [[1]] 
# [1] "Stack Overflow" 
elem$getElementText()[[1]] 
# [1] "Stack Overflow" 
remDr$close() 
rD[["server"]]$stop() 
関連する問題