我知道如何在selenium webdriver中加载chrome扩展。但是我没有看到任何描述如何从Selenium运行chrome扩展的帖子/博客。< br>
我需要明确地让chrome扩展运行/让它从selenium执行它的功能。比如我想用Selenium Webdriver的这个扩展清除Chrome浏览器的缓存。< br>
我可以先做吗?或者Selenium WebDriver是否只帮助我将一个扩展加载到浏览器实例中,并将它留在那里?
上面的解决方案在技术上是合理的,看起来很复杂,所以我想了另一种方法来做。因为很多时候我需要很多更好的手动完成的事情,身份验证,某些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
优点是您可以使用具有不同设置和扩展的多个文件夹,而无需安装和卸载扩展、更改设置、更改登录等
如果您想单击扩展图标,请尝试此解决方案,希望对您有所帮助:
JavascriptExecutor js = (JavascriptExecutor) driver;
js.executeScript("window.postMessage('clicked_browser_action', '*')");
当一个Chrome扩展被激活时,它已经在“运行”(至少是它的背景/事件页面)。没有API可以通过编程点击按钮。
如果您想轻松地使用现有扩展的功能,那么我建议您下载扩展的源代码,并在扩展源代码中插入一个额外的事件侦听器。
>
创建一个新的超文本标记语言文件,example_name.html
,并让它包含:
<script src="example_name.js"></script>
创建一个新的html" target="_blank">脚本文件,example_name.js
,并让它调用扩展的功能,例如:
chrome.runtime.getBackgroundPage(function(bg) {
// Relevant function at the background page. In your specific example:
bg.clearCache();
});
再次打包扩展,例如使用Chrome://扩展
上的GUI或使用
chrome.exe --pack-extension=directorycontainingextension
创建< code > directory containingextension . crx 后,在Chrome中加载这个crx文件以了解扩展ID。如果你不知道如何在Chrome中加载crx文件,只需访问https://robwu.nl/crxviewer/,选择crx文件,打开F12开发工具,在“计算的扩展名ID:[此处为扩展名ID]”处复制32个字符的字符串。
(从ChromeDriver 2.11开始,您只需压缩扩展程序而不是将其打包为CRX文件,并通过设置“key”属性在清单文件中对扩展程序ID进行硬编码(此“key”
属性也由CRX查看器打印到F12控制台)。
修改扩展后,您将拥有一个与原始扩展功能相同的扩展,外加一个额外的HTML页面。这个新的HTML页面在打开时将调用扩展的功能。
这样做之后,“运行”扩展就像打开chrome扩展一样简单://[extension ID HERE]/example_name。html</code>在一个新的选项卡中。
如果您不喜欢这些新选项卡,那么您还可以使用
chrome.web请求
或chrome.declarativeWeb请求
API来拦截自定义URL,并在页面请求此资源时激活所需的功能。然后,您可以将URL放在中。
问题内容: 我知道如何在Selenium Webdriver中加载Chrome扩展程序。但是我没有看到任何描述如何从Selenium 运行 chrome扩展的帖子/博客。 我需要明确地使chrome扩展程序运行/使其从selenium中执行其功能。例如,我想使用带有Selenium Webdriver的扩展程序清除Chrome浏览器的缓存。 我可以先做吗?还是Selenium WebDriver仅
我正在开发一个chrome扩展,遇到了一个大问题。 奇怪的是,我可以访问iframe的html。因此,这段代码在chrome扩展中可以完美地工作: 我尝试将“all_frames”:true放入清单文件中,但没有成功:(
Tweetmeme Chrome 扩展其实就是一个精简版的 TweetMeme 按钮,其作用就是让你“随时随地”都可以向你的关注者分享你正在浏览的网页(“随时随地”加引号是因为在天朝该服务不可用),简单点说就是一个 retweet 按钮。通过 Tweetmeme Chrome 扩展分享出的网址会采用 retwt.me 短网址服务进行缩短,对于身在墙外或者随时都在翻墙状态的用户来说非常实用。 安装
问题内容: 因此,对我的问题进行基本描述。 我有一个现在可以正常使用的扩展程序(最终),可以将电话号码包装在一种标签中。 它现在正在运行,但是我遇到了基于用户动作或基于ajax请求通过JS动态加载的任何内容的问题 例如,如果我单击并发送一个Hotmail电子邮件,该脚本将起作用,但仅当我刷新页面时,该电子邮件才能加载并调用我的内容脚本。 我考虑过通过使用户单击扩展程序的图标来解决此问题,但这并不是
问题内容: 我有一个chrome扩展程序,可以在网站上进行一些更改(编辑评论)。 在站点上进行了最近更改之后(站点不是我的站点)-使用ajax加载了注释块(之前是简单的发布请求,整个页面都重新加载了)。 现在,如果我第一次加载页面-内容脚本可以工作,但是当我转到下一页时,说页面#2-使用ajax添加注释,并且不再运行扩展脚本。所以评论并没有改变我想要的方式。 有没有简单的方法来监听页面更改DOM并
Puppeteer 可以用来测试 Chrome 扩展 注意 Chrome / Chromium 扩展当前只能在非无头模式下使用。 下面的代码用来处理扩展的 background page,该扩展的代码在 ./my-extension: const puppeteer = require('puppeteer'); (async () => { const pathToExtension =