【问题标题】:How to load extension within chrome driver in selenium with python如何使用 python 在 selenium 的 chrome 驱动程序中加载扩展
【发布时间】:2018-10-30 19:42:58
【问题描述】:

我在启用 Browsec 扩展的情况下打开 chrome 浏览器的所有努力都失败了。这是我上次尝试的 -

# Configure the necessary command-line option.
options = webdriver.ChromeOptions()
options.add_argument(r'--load- 
extension=C:\Users\lap0042\AppData\Local\Google\Chrome\User 
Data\Default\Extensions\omghfjlpggmjjaagoclmmobgdodcjboh')

# Initalize the driver with the appropriate options.
driver = webdriver.Chrome(chrome_options=options)

driver.get("http://stackoverflow.com")

这会导致错误“无法从 .Manifest 文件加载扩展名丢失或无法读取”

搜索此错误后,我发现 Manifest.json 文件应重命名为 manifest.json.txt,但这样做会导致相同的错误。

我们将不胜感激任何帮助

【问题讨论】:

    标签: python selenium google-chrome google-chrome-extension selenium-chromedriver


    【解决方案1】:

    据我所知,最简单的答案 - 清单在您引用的位置的子文件夹中(例如 3.28.2_0' 或任何最新版本的扩展...)

    这假设您使用的是 'options.add_argument('--load-extension=')...

    对于 options.add_extension('reference crx file .crx')

    【讨论】:

    • (实际上,正确的答案就是我上面所说的——这个人需要做的就是在扩展路径中包含子文件夹名称)....
    【解决方案2】:

    要使用任何扩展打开 chrome 浏览器,您需要通过 chrome.options 类的实例使用 add_extension() 方法,您可以使用以下解决方案:

    from selenium import webdriver
    from selenium.webdriver.chrome.options import Options
    
    chrome_options = Options()
    chrome_options.add_extension(r'C:\path\to\extension.crx')
    driver = webdriver.Chrome(chrome_options=chrome_options, executable_path=r'C:\Utility\BrowserDrivers\chromedriver.exe')
    driver.get('https://www.google.co.in')
    print("Page Title is : %s" %driver.title)
    driver.quit()
    

    参考文献

    您可以在以下位置找到相关文档:

    您可以在以下位置找到一些相关讨论:

    【讨论】:

    • 感谢 DebanjanB,这确实在 chrome 中添加了扩展名,但已禁用。是否有任何打开启用扩展的浏览器?或者启用扩展以便使用它的最佳方法是什么。
    • @user3121891 但被禁用,你们到底是什么人,请查看我在答案中添加的文档以供您参考。
    • 我的意思是扩展未激活。我希望在启动 chromedriver 时,它会在已激活扩展程序的情况下启动
    【解决方案3】:

    对于 Python,您需要 manifest.json 文件的 wright 路径

    from selenium.webdriver.chrome.options import Options
    from selenium import webdriver
    
    path = os.path.dirname(r"C:\temp\mdnleldcmiljblolnjhpnblkcekpdkpa\19.5.1.10_0\manifest.json")
    
    options = Options()
    options.add_argument(f"--load-extension={path}")
    driver = webdriver.Chrome(options=options)
    
    

    【讨论】:

      【解决方案4】:

      使用此代码获取扩展程序

      from selenium.webdriver.chrome.options import Options
      from selenium.webdriver.common.desired_capabilities import DesiredCapabilities
      
      ChromeOptions options = new ChromeOptions();
      options.addExtensions(new File("/pathtoChromeextension.crx")); //adding 
      DesiredCapabilities capabilities = new DesiredCapabilities();
      capabilities.setCapability(ChromeOptions.CAPABILITY, options);
      ChromeDriver driver = new ChromeDriver(capabilities);
      

      使用下方获取 crx 文件 http://crxextractor.com/ 来自您的扩展 id,即 omghfjlpggmjjaagoclmmobgdodcjboh

      【讨论】:

      • 感谢 Prany 的帮助。我试图找到 Browsec 的 CRX 或任何好的 VPN 插件,但还没有成功。当我尝试在其中添加带有扩展名 id 的文件时,链接 crxextractor.com 上的应用程序不显示任何 crx。实际上,扩展名 id 的文件夹中并没有 .CRX 文件。你能帮我找到任何好的VPN插件的crx吗
      • 好的,我提取了 .crx 文件。现在你能确认一下上面的代码是否适用于python 3吗?因为它显示错误
      • @user3121891 - 你有没有在顶部添加这个 - 'from selenium.webdriver.chrome.options import Options' 和 'from selenium.webdriver.common.desired_capabilities import DesiredCapabilities'
      • 我觉得你分享的脚本是java的,我在找Pyhton
      • 祈祷。这不是 python 3 的正确语法,因为我在运行此代码时遇到很多语法错误
      猜你喜欢
      • 2018-02-09
      • 2016-06-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-11-20
      • 1970-01-01
      • 2019-12-27
      • 1970-01-01
      相关资源
      最近更新 更多