通过 Firefox“浏览器控制台”(或命令行)在当前选项卡中加载 URL

通过 Firefox“浏览器控制台”(或命令行)在当前选项卡中加载 URL

为了调试目的,我需要在给定的 Firefox 选项卡中自动加载大量 URL(连续)。

更准确地说,我的目标是加载 URL1、URL2 等,就好像用户在 URL 栏中输入了这些 URL 并按回车键一样,始终在同一个选项卡中,并记录这些请求生成的网络流量。使用 Firefox 开发工具的“网络”部分并打开“持久日志”即可轻松记录网络流量:因此问题是如何连续加载各种 URL,而无需实际手动输入它们。

我不能简单地在 Web 控制台中运行将不同值放入的 JavaScript 循环window.location.href,因为加载新的 URL 会创建一个新的 JavaScript 上下文,所以我的循环一旦启动就会消失。

另一个想法是让 Firefox 从命令行在当前选项卡中打开一个 URL,但目前似乎没有任何方法可以做到这一点(有些页面建议运行firefox -remote 'openURL("https://example.org/")'应该可以做到,但如果这个命令曾经有效,现在它不再有效)。

不过,我怀疑从 Firefox 全局运行 JavaScript 代码“浏览器控制台”(而不是 Web 控制台)应该允许我在给定的 Firefox 选项卡中打开 URL,因为浏览器控制台可以控制所有浏览器选项卡。但我的问题是:如何?

上述链接会让人相信以下代码可能有效:

var newTabBrowser = gBrowser.getBrowserForTab(gBrowser.selectedTab);
newTabBrowser.contentDocument.location.href = "https://example.org/";

— 然而,事实并非如此newTabBrowser.contentDocumentnull而且我也没能猜到有哪个变体确实如此。

我找不到该gBrowser对象的任何文档,也找不到该对象可以做什么的说明(有些页面表明整个与浏览器交互的系统已经过时了,但我找不到任何解释来说明应该用什么来替代它)。所以:

问题:如何使用从 Firefox“浏览器控制台”内部运行的 JavaScript 在当前浏览器选项卡中加载给定的 URL(就像用户在位置栏中输入了该 URL 一样)?或者,欢迎提出有关如何在当前 Firefox 选项卡中实现加载 URL 的相同目标的其他建议。

答案1

我不完全明白我在做什么,但这在浏览器控制台中对我有用:

const b = gBrowser.getBrowserForTab(gBrowser.selectedTab);
const p = Services.scriptSecurityManager.getSystemPrincipal();

b.loadURI("https://google.com", {
 triggeringPrincipal: p
});

答案2

这是在 Mac 上的同一个选项卡中打开 URL。

open https://www.stackoverflow.com && sleep 5 && open https://www.superuser.com

open -a Firefox [URL]如果需要指定浏览器。

Windows 使用start [URL]start firefox [URL]

查看此帖子:https://stackoverflow.com/questions/38147620/shell-script-to-open-a-url

根据您要测试的具体内容,您可以使用 Selenium 浏览器扩展或 Katalon 扩展进行自动化测试。

相关内容