2016-08-11 22 views
1

私はRSeleniumで一日中働いていて、ここでも道路のブロックにぶつかっています。私の現在の問題はコードWebElemReports$clickElement()を使用してリンクをクリックし、新しいウィンドウが開きます。私はFirefoxの設定を "about:config"で調整しようとしましたので、新しいウィンドウは開きません。通常の使用ではウィンドウを開かないが、RSeleniumを使用すると新しいウィンドウが開きます。また、私はこのアプローチを見てそれが働いたかのロジックに従うことができませんでした:RSelenium:ウィンドウハンドルを使用してWindowsを切り替える

How to clickElement() and open the link in the same tab

私の次の思考プロセスはgetWindowHandlesとともにswitchToWindow()関数を使用していたが()。次のように私が書いたコードは次のとおりです。

remDr$closeWindow() 
windHand <- remDr$getWindowHandles() 
remDr$switchToWindow(windHand) 

私の考え方は参考とswitchToWindow関数にそのハンドルを渡すつのハンドルがあるでしょうように、私は現在のウィンドウを閉じますということです。私は上記のコードを使用して、次のエラーが表示さR.ための多くのswitchToWindowのドキュメントを見つけることができません。

Error: Summary: UnknownError Detail: An unknown server-side error occurred while processing the command. class: org.openqa.selenium.WebDriverException

この上の任意のヘルプははるかに高く評価されるだろう - 私はこのように、可能な限り、この限りを研究しようとしました最後の投稿のように重複した質問としてマークされません。どうもありがとう。

+0

このリンクのHTMLコードを共有することはできますか?また、windHand変数を印刷して、その中のwhatsを確認しようとしますか? 1つ以上の値がありますか?このページの最後にあるswitchToWindowのセクションを確認してください。https://cran.r-project.org/web/packages/RSelenium/vignettes/RSelenium-basics.html – Grasshopper

+0

こんにちは、出力はwindHandの場合は ' > windHand < - remDr $ getWindowHandles() '' windHand' '[[1]]'、 '[1] "{ccdc1fb0-d9c8-4bc7-a5d0-b69b1027cf8a}"'、 私は謝罪が、私はできHTMLを共有しないでください。 –

+0

リンクタグにはターゲット属性がありますか?もしそうなら、その中の価値は何ですか? – Grasshopper

答えて

3

実際には、メインウィンドウを閉じることができない、あなたは以下のように子ウィンドウに切り替えることができます: -

# get main window and store to switch back 
currWindow <- remDr$getCurrentWindowHandle() 

#gel all windows 
windows <- remDr$getWindowHandles() 

#loop through switching child window 
for (window in windows[[1]]) { 
    if (window != currWindow[[1]]) 
    remDr$switchToWindow(window) 
} 

#now do your stuff with child window 

#now close your child window after doing all stuff 
remDr$closeWindow() 

#now switch back to main window for further stuff 
remDr$switchToWindow(currWindow[[1]]) 
+1

ありがとうございます!最初は、正しいウィンドウハンドルであることを確認するまで、動作していないと思っていました。それから、親ウィンドウと違って子ウィンドウにフレームがあることがわかりました。だから私はフレームを通して作業しなければならなかった。 –

+1

現在使用しているバージョンでエラーです。 'for(ウィンドウ内のウィンドウ[[1]]){'は 'for(ウィンドウ内のウィンドウ){' –

関連する問題