在运行Selenium时,我需要从Web商店加载一个Chrome扩展,在我的研究中,我只找到了如何从本地机器加载一个扩展。
0mkxixxg1#
我不知道你为什么要从Webstore下载然后安装到Chrome中。我找到了一些步骤来下载chrome扩展:
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
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')
xpcnnkqh3#
新版本的Chrome支持crx.crx(crx3),如果你使用crx,它会抛出一个错误。
1.转到Chrome网络商店并搜索您的扩展,复制扩展的链接. Screen shot2.转到这个site并粘贴链接,然后为您的Chrome扩展下载crx文件。3.转到this GitHub页面并下载模块,该模块会将您的crx文件转换为crx3或crx.crx。4.现在您已经有了crx.crx或(crx3)文件
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的名称即可
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。
yvgpqqbh5#
不知道为什么,但有人删除了他们的答案,这是正确的。以下是内容(来源于@parishodak):
这个例子是在Java中
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
优点是您可以使用多个文件夹与不同的设置和扩展,而无需安装和卸载扩展,更改设置,更改登录等
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()); ....////....
7条答案
按热度按时间0mkxixxg1#
我不知道你为什么要从Webstore下载然后安装到Chrome中。
我找到了一些步骤来下载chrome扩展:
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文件加载扩展
来源:https://sites.google.com/a/chromium.org/chromedriver/extensions
ttp71kqs2#
我用Python做了这个,以防有人看到。
你所要做的就是下载.crx文件(我使用的是https://chrome-extension-downloader.com/)并将其保存到Python可以访问的地方。在我的例子中,我将其导入到Python脚本所在的文件夹中,以加载exampleOfExtensionDownloadedToFolder.crx。
xpcnnkqh3#
新版本的Chrome支持crx.crx(crx3),如果你使用crx,它会抛出一个错误。
1.转到Chrome网络商店并搜索您的扩展,复制扩展的链接. Screen shot
2.转到这个site并粘贴链接,然后为您的Chrome扩展下载crx文件。
3.转到this GitHub页面并下载模块,该模块会将您的crx文件转换为crx3或crx.crx。
4.现在您已经有了crx.crx或(crx3)文件
1.将扩展名. crx. crx文件与代码放在同一个文件夹中,或者指定路径
2.您可以复制粘贴这段代码,只需在'chrome_options. add_extension(' YOUR-EXTENSION-NAME ')'
处更改文件crx. crx的名称即可
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.现在,构建测试并执行
//这是扩展的URL,或者您可以在chrome://extensions/上获取ID,找到扩展并复制ID。但是,URL必须是扩展的URL。
yvgpqqbh5#
不知道为什么,但有人删除了他们的答案,这是正确的。以下是内容(来源于@parishodak):
这个例子是在Java中
jogvjijk6#
上面的解决方案虽然在技术上听起来并不总是像预期的那样工作,所以我想到了另一种方法来做它。因为很多时候我需要很多事情,更好地手动完成,身份验证,某些cookie等
我使用文件夹作为配置文件,我运行:
然后我手动安装扩展并进行登录每次启动Webdriver时,我都需要该文件夹中的所有内容
优点是您可以使用多个文件夹与不同的设置和扩展,而无需安装和卸载扩展,更改设置,更改登录等
qxsslcnc7#
....////....