为了调试目的,我需要在给定的 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.contentDocument
,null
而且我也没能猜到有哪个变体确实如此。
我找不到该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 扩展进行自动化测试。