8

我使用Selenium WebDriver來測試我正在開發的Google Chrome擴展程序。我注意到,可以定製ChromeDriver以向其啓動的Chrome實例添加擴展程序。這可以使用ChromeOptions類的AddExtensionAddExtensions方法來實現。如何使用解壓後的擴展程序啓動Chrome?

這些方法的文檔表明它們需要擴展才能作爲crx文件提供。由於我是開發擴展,我沒有一個crx文件。我希望能夠加載解壓後的擴展,但我找不到一個方法來做到這一點。

我試着把擴展文件放在一個zip文件中,併爲AddExtension方法指定了這個,但是這導致了一個異常,因爲它不是一個crx文件。我也嘗試傳入包含解壓縮文件的目錄,但是這產生了一個FileNotFoundException

我該怎麼做?

+1

我不知道這是什麼意思,但我提高了你的答案,因爲它確實看起來像是有用的信息。 –

回答

13

我能夠通過使用AddArgument方法直接將信息傳遞給Chrome來實現此目的。下面是它看起來像在C#:

options = new ChromeOptions(); 
options.AddArgument("--load-extension=" + unpackedExtensionPath); 
-1

硒文檔中有這樣的一個包裝(不解壓)擴展的例子:

capabilities.setCapability("platform", "Windows 8"); 
capabilities.setCapability("version", "10"); 
capabilities.setCapability("name", testname); 
capabilities.setCapability("screen-resolution", "1280x1024"); 
ChromeOptions options = new ChromeOptions(); 
options.addExtensions(new File("/path/to/extension.crx")); 
capabilities.setCapability(ChromeOptions.CAPABILITY, options); 
if (isLocal) driver = new ChromeDriver(capabilities); 
+1

'addExtensions'似乎需要一個* crx *文件,它代表一個* packed *擴展名,而不是一個解壓縮的文件。 – Sam

1

對於填料擴展(.crx檔案格式)

ChromeOptions options = new ChromeOptions(); 
options.addExtensions(new File("/path/to/extension.crx")); 
DesiredCapabilities capabilities = new DesiredCapabilities(); 
capabilities.setCapability(ChromeOptions.CAPABILITY, options); 
ChromeDriver driver = new ChromeDriver(capabilities); 

對於解壓的擴展程序(文件夾)

ChromeOptions options = new ChromeOptions(); 
options.addArguments("load-extension=/path/to/extension"); 
DesiredCapabilities capabilities = new DesiredCapabilities(); 
capabilities.setCapability(ChromeOptions.CAPABILITY, options); 
ChromeDriver driver = new ChromeDriver(capabilities); 

source

+0

第二個選項只適用於本地Selenium,因爲'/ path/to/extension'不能遠程訪問。 – Vladimir

1

的正在開發的擴展錯誤彈出了我,我請求刪除其強制執行,組織策略中鉻的限制。一旦限制被刪除,我能夠運行該程序沒有任何錯誤。 ChromeBrowser-GPO-Deny - 這是被刪除的那個。您可以檢入設置 - 擴展 - 檢查開發人員模式,並查看是否在刪除限制後檢查加載解壓後的擴展。那你應該很好。以上所有條件僅適用於鉻不受限制的情況。