2017-02-09 7 views
2

最新のバージョンのRSelenium(1.7.1)を使用してChromeを駆動する場合、同様にAdBlockerを有効にしたいと思うので、質問はthis previous oneと関連しています。 startServerが非推奨になったので、どのようにしてRSeleniumでChromeプロファイルを設定しますか?Adblockerの拡張機能を有効にする最新バージョンのRSeleniumを使用しているChrome

私が使用しているコードは次のとおりですが、最後の行が正しいとは思わないです。少なくとも、ChromeがRSeleniumを使用して開かれているときは、AdBlockerが動作していないように見えます。思考?

rD <- rsDriver(verbose = F) 
remDr <- rD$client 
cprof <- getChromeProfile("/Users/<username>/Library/Application Support/Google/Chrome", "Default") 
remDr$extraCapabilities <- cprof 

答えて

3

あなたはrsDriver関数にextraCapabilities引数を渡すことができます。

cprof <- getChromeProfile("/Users/<username>/Library/Application Support/Google/Chrome", "Default") 
rD <- rsDriver(verbose = F, extraCapabilities = cprof) 
remDr <- rD$client 

UPDATE

ます。また、関連するCRXファイルをコードする塩基64で拡張子を追加することができます。あなたがbase64でエンコードする必要があるcrxファイルがあれば、例えばhttp://chrome-extension-downloader.com/からchromeのcrxファイルを得ることができます(adguard adblockerの現在のIDはbgnkhhnnamicmpeenaelnjfhikgbkllgです)。

library(RSelenium) 

cprof <- list(chromeOptions = 
       list(extensions = 
         list(base64enc::base64encode("C:/Users/john/Downloads/Adguard-AdBlocker_v2.5.11.crx")) 
       )) 
rD <- rsDriver(verbose = F, extraCapabilities = cprof) 
remDr <- rD$client 

あなたはjsonliteでエンコードする場合:MAC OSXシエラで

tmpfile <- "C:/Users/john/Downloads/Adguard-AdBlocker_v2.5.11.crx" 
jsonlite::base64_enc(readBin(tmpfile, "raw", file.info(tmpfile)$size)) 

:私は、このためにhttps://cran.r-project.org/web/packages/base64enc/を使用し、私は "seltestprof" クロムに人を追加することで、プロファイルを作成し

。プロファイルはフォルダ内に作成されます。このフォルダは、プロファイルを使用しているときにchrome:// versionを参照すると見つかります。ここにリストされているプロファイルパスが表示されます。 ライブラリ(RSelenium)

cprof <- list(
    chromeOptions = 
    list(extensions = 
      list(base64enc::base64encode("/Users/admin/Downloads/Adguard-AdBlocker_v2.5.11.crx")) 
    ) 
) 
rD <- rsDriver(verbose = F, extraCapabilities = cprof) 
remDr <- rD$client 

:私は次のコードを使用するベース符号化されたCRXを使用する

library(RSelenium) 

cprof <- getChromeProfile("/private/var/folders/c2/d97mz0250bg08rr4g2znxk7m0000gq/T/.org.chromium.Chromium.mS5SA1/", "Profile 1") 
rD <- rsDriver(verbose = F, extraCapabilities = cprof) 
remDr <- rD$client 
remDr$navigate("http://ads-blocker.com/testing/") 
remDr$screenshot(display = TRUE) 

:鉱山

/private/var/folders/c2/d97mz0250bg08rr4g2znxk7m0000gq/T/.org.chromium.Chromium.mS5SA1/Profile 1 

たIは、プロファイルを使用するために、次のコードを実行しましたenter image description here

+0

お返事ありがとうございます。 'extraCapabilities'を' rsDriver'に渡しても、そのトリックをやっていないようです。 AdblockerはChromeを手動で実行しても動作しますが、RSeleniumを使用してリモートでドライブすると動作しません。なぜそれが事実だろうと知っていますか? –

+0

@M.Aitkenこれは、カスタムプロファイルを使用する正しい方法です。カスタムプロファイルフォルダが正しく識別されていることを確認してください。また、クロムの2つのバージョンは同じプロファイルを使用できないことに注意してください。クロムが既に開いている場合、それは動作しません。私が追加した拡張機能を追加するもう一つの方法があります。 – jdharrison

+0

プロファイルフォルダが正しく識別されていることを確認しました。私はまた、Rでそれを開く前にクロムを閉じていることを確認しました。代替ソリューションのおかげさまですが、私はまだあなたが示唆したように(base64encまたはjsonliteのいずれかで)crxファイルをエンコードすることによって動作するようにはなっていません。これはMacとPCの違いですか? –

関連する問題