2017-02-09 71 views
2

我的問題與this previous one有關,因爲我同樣希望在使用最新版本的RSelenium(1.7.1)驅動Chrome時啓用AdBlocker。現在startServer已被棄用,您如何在RSelenium中設置Chrome配置文件?啓用Adblocker擴展在Chrome中使用最新版本的RSelenium

我使用的代碼如下,但我不認爲最後一行是正確的。至少,當使用RSelenium打開Chrome時,AdBlocker似乎不工作。思考?

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

回答

3

您可以通過extraCapabilities參數傳遞給rsDriver功能:

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

UPDATE

您還可以通過底座64添加擴展編碼相關的CRX文件。一旦你有了需要對base64進行編碼的crx文件,你就可以從例如http://chrome-extension-downloader.com/(目前adguard adblocker的id是:bgnkhhnnamicmpeenaelnjfhikgbkllg)中獲得chrome crx文件。我用這個https://cran.r-project.org/web/packages/base64enc/

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編碼:

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

在Mac OSX上塞拉:

我創建一個配置文件通過鍍鉻 「seltestprof」 增加一個人。該配置文件創建在可以通過瀏覽chrome://版本找到的文件夾中,同時使用該配置文件。您可以在此處列出配置文件路徑。礦是

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

我跑的下面的代碼使用的配置文件:

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) 

要使用鹼編碼CRX我用下面的代碼: 庫(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 

enter image description here

+0

感謝您的快速回復。然而,將'extraCapabilities'傳遞給'rsDriver'似乎沒有辦法。當我手動運行Chrome時,Adblocker可以正常工作,但當我使用RSelenium遠程驅動時,Adblocker不起作用。你知道爲什麼會這樣嗎? –

+0

@ M.Aitken這是使用自定義配置文件的正確方法。請檢查您是否正確識別了自定義配置文件夾。另外請注意,兩個版本的chrome不能使用相同的配置文件,所以如果你已經打開chrome,它將無法工作。還有第二種方法來添加我已添加的擴展。 – jdharrison

+0

我確定配置文件夾已被正確識別。在使用R打開之前,我也一定要關閉Chrome。感謝替代解決方案,但是我仍然無法按照您的建議通過編碼crx文件(使用base64enc或jsonlite)來使用它。 。這是一個Mac與PC的東西,還是其他的事情? –