当前位置: 首页 > 面试题库 >

使用带有扩展名的Python(.crx文件)运行Selenium WebDriver

何长恨
2023-03-14
问题内容

我去了Chrome Extension Downloader,将.crxhtml" target="_blank">文件锁定为“ Adblock-Plus_v1.4.1”。

我把它扔到我正在工作的目录中,然后运行:

from selenium import webdriver

chop = webdriver.ChromeOptions()
chop.add_extension('Adblock-Plus_v1.4.1.crx')
driver = webdriver.Chrome(chrome_options = chop)

它完全承认它的存在,但是它给了我看起来像一条ChromeDriver.exe样式信息:

ERROR:extension_error_reporter.cc(56)] Extension error: Package is invalid: 'CRX_PUBLIC_KEY_INVALID'.

然后最终是一个webdriver异常:

selenium.common.exceptions.WebDriverException: Message: u'Extension could not be installed'

我几乎100%确信我的代码没有问题,因为它会在引发异常之前先放置ChromeDriver类型的消息。

我也试图去收拾它自己'C:\Documents and Settings\\*UserName*\Local Settings\Application Data\Google\Chrome\User Data\Default\Extensions'chrome://extensions/与开发人员模式上,尝试使用已创建的.crx并得到了确切的相同的错误消息

我还尝试了另一种方式:

chop = webdriver.ChromeOptions()
chop.add_argument('--load_extension=Adblock-Plus_v1.4.1.crx')
driver = webdriver.Chrome(chrome_options = chop)

这不会导致异常,甚至不会导致Chrome驱动程序错误,但是如果我手动转到chrome://extensions/它,则不会说扩展程序已加载…

我认为我的问题与实际的.crx文件本身有关。由于错误消息的性质…但是同时,我不确定,因为如果生成webdriver.Chrome()会话,然后手动转到,则chrome://extensions/可以物理拖放安装相同的.crx文件。

编辑:我意识到我实际上没有问一个问题,所以这里是:

我究竟做错了什么?为什么我无法加载此Chrome扩展程序?是我的代码还是.crx文件本身?

更新:@Pat Meeker我已经尝试过了,但是我在从Java到python的翻译中丢失了一些东西

capability = webdriver.DesiredCapabilities.CHROME返回一个字典,其中包含我所有的参数i,因此,我很确定我唯一需要做的就是添加参数

options = webdriver.ChromeOptions()
options.add_argument('--user-data-dir=C:/Users/USER_NAME/AppData/Local/Google/Chrome/User Data/Default/')

这就是我现在所拥有的,每当我尝试driver = webdriver.Chrome(chrome_options=options)打开chrome时,似乎都记得它以前的位置,但是什么也没有,没有书签,没有扩展名也没有。


问题答案:

只需在程序中添加此额外的行

from selenium.webdriver.chrome.options import Options 它会工作…

像这样

from selenium import webdriver
from selenium.webdriver.chrome.options import Options

chop = webdriver.ChromeOptions()
chop.add_extension('Adblock-Plus_v1.4.1.crx')
driver = webdriver.Chrome(chrome_options = chop)


 类似资料:
  • 问题内容: 设法将我的文件存储在一个文件夹中,但是没有文件扩展名。 有谁知道我将如何存储带有文件扩展名的文件? 问题答案: 从文档中:“ Multer不会为您添加任何文件扩展名,您的函数应返回带有文件扩展名的文件名。” 添加扩展名的方法如下: 我建议使用该属性来确定扩展名。例如: 更多信息:https://github.com/expressjs/multer

  • 问题内容: 我想用PHP包装CSS文件…因此,我为CSS文件编写了标头,并给了它一个.php文件扩展名,因此… css.php。 如果该页面已被用作包含内容,是否可以使用?还是这个新标题与页面所包含的框架冲突? 问题答案: 加纳夫钉牢了它。 我做: 然后在您的.css.php文件顶部:

  • 问题内容: 我有这个PHP代码: 如果我有一个名为的文件,则此函数返回。 我想做相反的事情,我希望函数不带扩展名就返回。 该文件只是变量中的字符串。 问题答案: 不需要所有这些。签出pathinfo() ,它为您提供了路径的所有组件。 手册中的示例: 代码输出: 或者,您只能获得某些部分,例如:

  • 如果我们将此链接粘贴到Chrome或Safari,它将开始下载。 但问题是 null 添加&download=“mywork.fbx” 使用PHP头('content-disposition:attachment;filename=“mywork.fbx”');fbx文件名是我的,但是带宽也是我的,不仅仅是Google Drive!!! 检查堆栈溢出中的项目,但找不到正确的项目

  • 问题内容: 假设我在数据库表的列中有或,等等。 如何仅获取文件扩展名? 问题答案: 试试这个: sqlfiddle

  • 问题内容: 我正在尝试遍历文件夹和所有子文件夹以查找某些文件类型的所有文件-例如,仅.mp4,.avi,.wmv。 这是我现在拥有的,它遍历所有文件类型: 谢谢! 问题答案: 您可以使用which采取路径并将文件扩展名从其末尾分割: