使用硒加载铬延伸

时间:2015-12-11 11:23:02

标签: selenium selenium-webdriver google-chrome-extension google-chrome-devtools

我想要的只是从网上商店加载Chrome扩展程序。 我做了很多搜索来弄明白,但只知道我们可以从本地机器加载扩展。 我真的很想知道selenium是否具有从网上商店或网址加载扩展程序的功能。

请让我知道我正在尝试使用硒?

8 个答案:

答案 0 :(得分:14)

我不确定您为何要特别关注从Webstore下载然后安装到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”)。复制此文件夹并将其移动到要安装的计算机上 - 在断开连接的机器上打开镀铬并转到扳手 - >工具 - >扩展
- 单击开发人员模式旁边的+以显示开发人员选项
- 单击“包扩展名...”并选择版本文件夹作为根目录。将私钥文件留空。这将在版本文件夹中创建.crx文件以及私钥,就像您是开发人员一样。

- 或 -

1-找到您感兴趣的扩展程序的ID。在扩展程序的详细信息页面上,它将类似于:                      bfbmjmiodbnnpllbbbfblcplfjjepjdn 后                      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/g02KlhK12fU

最后,使用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

答案 1 :(得分:6)

  1. 如果您想要遵循此并且取得成功,请将chromedriver exe放入您的文档文件中。

  2. 从Google下载“GET CRX”扩展程序。

  3. 下载您的扩展程序(即我的“DHS”用于Rest API测试)。

  4. 转到Chrome网上应用店>>搜索您的扩展程序(您已经下载的扩展程序)>>右键单击它并单击:: 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");
    }
    

    //这是扩展程序网址,您也可以在chrome:// extensions /上找到ID,找到扩展程序并复制 ID 。但是,网址必须是扩展程序网址。

答案 2 :(得分:5)

我用 Python 做到了这一点,以防有人在寻找。

您要做的就是下载.crx文件(我使用https://chrome-extension-downloader.com/)并将其保存在Python可以访问的位置。在我的示例中,我将其导入到与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')

答案 3 :(得分:3)

不确定原因,但有人删除了他们的答案,这是正确的。以下是内容(来自@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

答案 4 :(得分:0)

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

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

答案 5 :(得分:0)

上述解决方案虽然在技术上听起来并不总是按预期工作,但我还是想到了另一种方法。 因为很多时候我需要手动,身份验证,某些cookie等更好的事情。

我使用文件夹作为个人资料,我运行:

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

然后我手动安装Extensions并执行我现在需要的登录,每次我启动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

优点是您可以使用具有不同设置和扩展的多个文件夹,而无需安装和卸载扩展,更改设置,更改登录等

答案 6 :(得分:0)

这是在铬硒化脓中加载铬扩展名的方法
日期= 20-12-19
chrome版本= 79.0.3945.88

新版chrome支持crx.crx(crx3),如果您使用crx,则会抛出错误。
如果您使用的是chrome 73或更高版本,则只需执行以下步骤

 
1>创建一个crx3文件。

     1.转到Chrome网上应用店并搜索您的扩展名,然后复制扩展程序的链接。       Screen shot
     2.转到此site,然后粘贴链接并下载Chrome扩展程序的crx文件。
     3.转到this GitHub页面并下载该模块,该模块会将您的crx文件转换为crx3或crx.crx。
     4.现在,您有了crx.crx或(crx3)文件


2> Python代码在硒中添加铬扩展。

   1.将extension.crx.crx文件与代码放在同一文件夹中,或提供路径    
2。您可以复制粘贴此代码,只需在chrome_options.add_extension(' YOUR - EXTIONTION - NAME ')

上更改文件crx.crx名称。
import os
    from selenium import webdriver
    from selenium.webdriver.chrome.options import Options


    executable_path = "/webdrivers"
    os.environ["webdriver.chrome.driver"] = executable_path

    chrome_options = Options()

    chrome_options.add_extension('  YOUR - EXTIONTION  - NAME    ')

    driver = webdriver.Chrome(chrome_options=chrome_options)
    driver.get("http://stackoverflow.com")

答案 7 :(得分:-1)

http://chromedriver.chromium.org/extensions

解压(目录)

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