使用 selenium 加载chrome扩展

cigdeys3  于 2022-11-29  发布在  其他
关注(0)|答案(7)|浏览(211)

在运行Selenium时,我需要从Web商店加载一个Chrome扩展,在我的研究中,我只找到了如何从本地机器加载一个扩展。

  • Selenium是否可以从Web Store加载扩展?*
0mkxixxg

0mkxixxg1#

我不知道你为什么要从Webstore下载然后安装到Chrome中。
我找到了一些步骤来下载chrome扩展:

  • 在计算机连接到Internet的情况下,从扩展页面安装扩展:https://chrome.google.com/webstore/detail/
  • 导航到扩展源代码。在XP中,可在以下位置找到:C:\文档和设置\本地设置\应用程序数据\Google\Chrome\用户数据\默认\扩展\
  • 您应该会看到一个版本文件夹(即"0.0.21_0")。复制此文件夹并将其移动到要安装的计算机上。
  • 打开断开连接的机器上的铬板,然后转到扳手-〉工具-〉扩展件
  • 单击开发人员模式旁边的+以显示开发人员选项
  • 单击"打包扩展..."并选择版本文件夹作为根目录。将私钥文件保留为空。这将在版本文件夹中创建一个. crx文件以及一个私钥,就像您是开发人员一样。
  • -或者--
    1-找到您感兴趣的扩展的ID。在扩展的详细信息页面上,它将类似于:在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窗口中,然后继续安装。
    图片来源:
    最后,在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

ttp71kqs

ttp71kqs2#

我用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(options=options) 
driver.get('http://www.google.com')
xpcnnkqh

xpcnnkqh3#

    • 以下是如何将chrome扩展加载到chrome Selenium Python中**
  • 日期= 2019年12月20日 *
  • 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〉在selenium中添加chrome扩展的Python代码**

1.将扩展名. crx. crx文件与代码放在同一个文件夹中,或者指定路径
2.您可以复制粘贴这段代码,只需在'chrome_options. add_extension(' YOUR-EXTENSION-NAME ')'

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

处更改文件crx. crx的名称即可

dvtswwa3

dvtswwa34#

1.把chromedriver exe在您的文档文件,如果你想遵循这一点,并有一个成功的结果。
1.从Google下载“GET CRX”扩展。
1.下载您的扩展(例如,我的扩展是“DHS”,用于Rest API测试)。
1.进入Chrome网络商店〉〉搜索您的扩展程序(您已经下载的那个)〉〉右击它并点击::获取CRX
(This应该下载CRX文件。对于我的情况,CRX文件是“extension_1_2_5.crx”)
1.将CRX文件放到任何Chrome窗口中(这可以拒绝它,但不用担心)。
1.现在,构建测试并执行

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。

yvgpqqbh

yvgpqqbh5#

不知道为什么,但有人删除了他们的答案,这是正确的。以下是内容(来源于@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中

jogvjijk

jogvjijk6#

上面的解决方案虽然在技术上听起来并不总是像预期的那样工作,所以我想到了另一种方法来做它。因为很多时候我需要很多事情,更好地手动完成,身份验证,某些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

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

qxsslcnc

qxsslcnc7#

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

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

相关问题