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

从Selenium WebDriver运行Chrome扩展程序

乐正育
2023-03-14
问题内容

我知道如何在Selenium Webdriver中加载Chrome扩展程序。但是我没有看到任何描述如何从Selenium 运行
chrome扩展的帖子/博客。

我需要明确地使chrome扩展程序运行/使其从selenium中执行其功能。例如,我想使用带有Selenium
Webdriver的扩展程序清除Chrome浏览器的缓存。

我可以先做吗?还是Selenium WebDriver仅将扩展加载到浏览器实例中并留在浏览器实例中对我有帮助?


问题答案:

启用Chrome扩展程序后,该扩展程序已经“运行”(至少是其后台/事件页面)。没有API以编程方式单击该按钮。

如果您想不费力地使用现有扩展的功能,则建议下载扩展的源代码,并在扩展的源代码中插入其他事件侦听器。

  1. 获取扩展程序的源(例如,使用Chrome扩展程序源查看器,也称为CRX Viewer)。
  2. 解压缩该zip文件。
  3. 创建一个新的HTML文件example_name.html,并使其包含:

    <script src="example_name.js"></script>
    
  4. 创建一个新的脚本文件,example_name.js并使其调用扩展程序的功能,例如:

    chrome.runtime.getBackgroundPage(function(bg) {
    // Relevant function at the background page. In your specific example:
    bg.clearCache();
    

    });

  5. 将以前的HTML文件添加web_accessible_resources清单文件中。

  6. 再次打包扩展,例如使用chrome://extensions或使用GUI
    chrome.exe --pack-extension=directorycontainingextension
    

创建完成后directorycontainingextension.crx,将此crx文件加载到Chrome中以了解扩展程序ID。如果您不知道如何在Chrome中加载crx文件,只需访问https://robwu.nl/crxviewer/,选择crx文件,打开F12开发人员工具,然后将32个字符的字符串复制到“计算的扩展ID”
:[此处为扩展名ID]”。

(从ChromeDriver
2.11开始,您可以压缩扩展名而不是将其打包为CRX文件,并通过设置"key"属性将扩展名ID硬编码在清单文件中(此"key"属性也由CRX
Viewer打印到F12控制台)。

修改扩展名后,您将拥有一个具有与原始扩展名相同功能的扩展名,以及一个附加的HTML页面。 新的HTML页面在打开时将调用扩展程序的功能

完成此操作后,“运行”扩展程序就像chrome-extension://[EXTENSION ID HERE]/example_name.html在新选项卡中打开一样容易。

如果您不喜欢这些新选项卡,则还可以使用chrome.webRequestchrome.declarativeWebRequestAPI拦截自定义URL,并在页面请求此资源时激活所需的功能。然后,您只需将URL放在中<img>即可激活扩展程序的功能。



 类似资料:
  • 我知道如何在selenium webdriver中加载chrome扩展。但是我没有看到任何描述如何从Selenium运行chrome扩展的帖子/博客。< br> 我需要明确地让chrome扩展运行/让它从selenium执行它的功能。比如我想用Selenium Webdriver的这个扩展清除Chrome浏览器的缓存。< br> 我可以先做吗?或者Selenium WebDriver是否只帮助我将

  • 我正在开发一个chrome扩展,遇到了一个大问题。 奇怪的是,我可以访问iframe的html。因此,这段代码在chrome扩展中可以完美地工作: 我尝试将“all_frames”:true放入清单文件中,但没有成功:(

  • 问题内容: 我想创建一个Google Chrome扩展程序。具体来说,我想制作一个打包的应用程序,而不是一个托管的应用程序。我认为这限制了我使用JavaScript(和HTML / CSS)是否正确? 我的问题是我需要做一些复杂的数学运算(奇异值分解,因子分析),并且我不想在javascript中为此编写算法。Python已经有了我需要的功能的库(SciPy),但是我找不到任何可以使用python

  • 问题内容: 因此,对我的问题进行基本描述。 我有一个现在可以正常使用的扩展程序(最终),可以将电话号码包装在一种标签中。 它现在正在运行,但是我遇到了基于用户动作或基于ajax请求通过JS动态加载的任何内容的问题 例如,如果我单击并发送一个Hotmail电子邮件,该脚本将起作用,但仅当我刷新页面时,该电子邮件才能加载并调用我的内容脚本。 我考虑过通过使用户单击扩展程序的图标来解决此问题,但这并不是

  • 问题内容: 我有一个chrome扩展程序,可以在网站上进行一些更改(编辑评论)。 在站点上进行了最近更改之后(站点不是我的站点)-使用ajax加载了注释块(之前是简单的发布请求,整个页面都重新加载了)。 现在,如果我第一次加载页面-内容脚本可以工作,但是当我转到下一页时,说页面#2-使用ajax添加注释,并且不再运行扩展脚本。所以评论并没有改变我想要的方式。 有没有简单的方法来监听页面更改DOM并

  • 问题内容: 我正在构建一个Chrome扩展程序,该扩展程序仅适用于我工作的公司内部的人员。该扩展需要输入-可以通过对共享的MySQL DB服务器的简单查询生成输入(所有员工都可以以只读权限访问该服务器)。 问题是-由于扩展是所有客户端(主要是Javascript)-访问数据库和运行查询的最简单方法是什么?我是否必须创建一个针对扩展名的php / java(/ …)服务? 问题答案: 您必须创建一个