web-dev-qa-db-ja.com

Load chromeセレンを使用した拡張

私が望むのは、ウェブストアからchrome拡張機能をロードすることです。私はそれを理解するために多くの検索を行いますが、ローカルマシンから拡張機能をロードできることを知りました。 Seleniumには、WebストアまたはURLから拡張機能をロードする機能がありません。

私がしようとしていることをSeleniumを使用して可能ですか?

13
D Deshmane

ウェブストアからダウンロードしてからChromeにインストールすることに特に関心があるのか​​わかりません。

chrome拡張機能をダウンロードする手順がいくつか見つかりました:

-インターネットに接続されたコンピューターで、拡張機能ページから拡張機能をインストールします。 https://chrome.google.com/webstore/detail/
-拡張機能のソースコードに移動します。 XPこれはC:\ Documents and Settings \\ Local Settings\Application Data\Google\Chrome\User Data\Default\Extensions \にあります
-バージョンフォルダーが表示されます(つまり、「0.0.21_0」)。このフォルダをコピーして、インストールするマシンに移動します。
-chromeを開き、レンチ->ツール->拡張機能に移動します
-開発者モードの横にある+をクリックして、開発者オプションを表示します
-「Pack extension ...」をクリックして、ルートフォルダーとしてバージョンフォルダーを選択します。秘密鍵ファイルは空白のままにします。これにより、開発者であるかのように、秘密キーと共にバージョンフォルダーに.crxファイルが作成されます。

-または-

1-関心のある拡張機能のIDを検索します。拡張機能の詳細ページでは、次のようになります。bfbmjmiodbnnpllbbbfblcplfjjepjdn after https://chrome.google.com/webstore/detail/

2-これを他のブラウザー(Chrome以外)に貼り付けます: https://clients2.google.com/service/update2/crx?response=redirect&x=id%3D~~~~%26uc

3-および~~~~を拡張IDに置き換えます。 CRXファイルを保存するよう求められます。このファイルをChromeウィンドウにドラッグし、インストールを続行します。

ソース: https://productforums.google.com/forum/#!topic/chrome/g02KlhK12f

最後に、ChromeOptionsでダウンロードした.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);

ソース: https://sites.google.com/a/chromium.org/chromedriver/extensions

16
parishodak

誰かが見ている場合に備えて、Pythonでこれを行いました。

あなたがしなければならないのは、.crxファイルをダウンロードするだけです(私は https://chrome-extension-downloader.com/ を使用し、Python can私の例では、それをmy Pythonスクリプトと同じフォルダーにインポートし、exampleOfExtensionDownloadedToFolder.crxをロードします。

from Selenium import webdriver 
from Selenium.webdriver.chrome.options import Options 

options = webdriver.ChromeOptions()
options.add_extension('./exampleOfExtensionDownloadedToFolder.crx')
driver = webdriver.Chrome(chrome_options=options) 
driver.get('http://www.google.com')
10
David Liu
  1. これに従って、成功する場合は、chromedriver exeをドキュメントファイルに入れます。

  2. Googleから「GET CRX」拡張機能をダウンロードします。

  3. 拡張機能をダウンロードします(つまり、REST APIテスト用の「DHS」です)。

  4. Chrome Web Store >>拡張機能(既にダウンロードした拡張機能)を検索>>を右クリックしてクリック:: Get CRX
    (CRXファイルをダウンロードする必要があります。私の場合、CRXファイルは「extension_1_2_5.crx」です)

  5. CRXファイルを任意のChrome=ウィンドウにドロップします(これにより拒否できますが、心配する必要はありません)。

  6. 次に、テストをビルドして実行します

    public static void openChromeExtension(){
    
        System.setProperty("webdriver.chrome.driver", "/Users/[your local name]/Documents/chromedriver");
    
        ChromeOptions options = new ChromeOptions();
        options.addExtensions(new File("/Users/[your local name]/Documents/extension_1_2_5.crx"));
    
        DesiredCapabilities capabilities = new DesiredCapabilities();
        capabilities.setCapability(ChromeOptions.CAPABILITY, options);
        ChromeDriver driver = new ChromeDriver(capabilities);
        System.out.println("Opening extension");
        driver.get("chrome-extension://**aejoelaoggembcahagimdiliamlcdmfm**/dhc.html"); 
    
        driver.navigate().refresh();
        System.out.println("Refresh successfully");
    }
    

    //これは拡張URLです。または、chrome:// extensions /でIDを取得し、拡張を見つけて[〜#〜] id [〜#〜]をコピーできます。ただし、URLは拡張URLである必要があります。

7
Grace Kabuika

理由はわかりませんが、誰かが答えを削除しましたが、それは正しかったです。コンテンツは次のとおりです(@parishodakから提供)。

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);

この特定の例はJavaにあります

3
ddavison
using System.IO;
using System.IO.Compression;



  public static class ChromeExtension
        {
            public static string Execute()
            {
                var ParentPath = Directory.GetParent(Directory.GetCurrentDirectory()).Parent;
                var DirectoryPath = ParentPath.FullName.Remove(ParentPath.FullName.IndexOf(ParentPath.Name));

                string startPath = $"{DirectoryPath}\\Exchanger\\ChromeExtension";
                string zipPath = $"{DirectoryPath}Exchanger\\Extension.Zip";

                if (System.IO.File.Exists(zipPath))
                {
                    System.IO.File.Delete(startPath);
                }

                ZipFile.CreateFromDirectory(startPath, zipPath);


                if (System.IO.File.Exists($"{DirectoryPath}\\Exchanger\\Extension.crx"))
                {
                    System.IO.File.Delete($"{DirectoryPath}\\Exchanger\\Extension.crx");
                }

                System.IO.File.Move(zipPath, $"{DirectoryPath}\\Exchanger\\Extension.crx");

                return $"{DirectoryPath}\\Exchanger\\Extension.crx";
            }

        }

.... //// ....

Used: 
var options = new ChromeOptions();   
options.AddExtension(ChromeExtension.Execute());

....////....
0
Pavlo Vasilikiv

上記のソリューションは、技術的には正しいとは限りませんが、常に意図したとおりに機能するとは限らないため、別の方法を考えました。多くの場合、手動、認証、特定のCookieなどの方が適切な処理が必要だからです。

フォルダーをプロファイルとして使用し、実行します:

chrome_options = Options()
chrome_options.add_argument("user-data-dir=Selenium") 
driver = webdriver.Chrome(chrome_options=chrome_options)
driver.get("www.google.com")

次に、拡張機能を手動でインストールし、そのフォルダーでWebdriverを起動するたびに必要なログインを行います。すべてがそこにあります

chrome_options = Options()
chrome_options.add_argument("user-data-dir=Selenium") 
driver = webdriver.Chrome(chrome_options=chrome_options)
driver.get("www.google.com") #Now you can see the Extensions and the logins done are present

利点は、拡張機能のインストールとアンインストール、設定の変更、ログインの変更などを行わずに、異なる設定と拡張機能を持つ複数のフォルダーを使用できることです。

0