你们有没有人知道Scratchpad(存在于Firefox中)替代品可以在没有浏览器的情况下运行JavaScript并在特定网站上进行DOM操作吗?
最好是从unix命令行运行它。
答案 0 :(得分:5)
我发现了一个类似的帖子,它针对您的问题提供了相对最新的答案- Run DOM-based Javascript from command line
主要问题是浏览器实际上是创建您要与之交互的DOM的原因。因此,如果没有某种“浏览器”运行,我们将没有DOM。但是,有一些可用的工具(例如Selenium)可以自动/模拟启动浏览器,创建DOM并运行JavaScript。
答案 1 :(得分:1)
我已经在这里看到了便笺本(以及便笺js之类的替代方法)中提到的很多内容,但是您的答案特别要求替代方法。 Node.js可以很好地实现此目的,但默认情况下无法操纵DOM。此时,软件包有两个选项,它们的工作略有不同。一种称为jsdom
,它允许您从给定的源代码中操作DOM。既然您说的是在寻找暂存器之类的解决方案,那么puppeteer
也可能会起作用。它使用无头铬,可让您以编程方式控制铬。我认为您需要puppeteer
,但是从技术上讲,它使用浏览器,因此您可能需要jsdom
。
puppeteer
或jsdom
(上面有详细说明)。mkdir javascript && cd javascript
npm
(节点程序包管理器)初始化目录:npm init -y
puppeteer
:
npm install puppeteer
const puppeteer = require('puppeteer');
(async () => {
const browser = await puppeteer.launch();
const page = await browser.newPage();
await page.goto('https://example.com');
await page.addScriptTag({content:`
document.querySelector('div>h1').textContent = 'Example Puppeteer'
`})
await page.evaluate(() => {
document.querySelector('div>p').textContent = "Just another way to do things."
});
// this ^ is slightly different because in the
// first the javascript is being injected as a
// script tag, while in the second the div>p is
// actually being manipulated. The first would
// probably be closer to scratchpad though.
await page.screenshot({path: 'screenshot.png'});
await browser.close();
})();
node index.js
jsdom
:
npm install jsdom
const { JSDOM } = require('jsdom')
const { document } = (new JSDOM(`<!DOCTYPE html><html><head></head><body><p>Hello</p></body></html>`)).window
document.querySelector('p').textContent = 'Hello World!'
console.log(document.querySelector('p').textContent) // Will output 'Hello World!'
node index.js
答案 2 :(得分:0)
它不会从UNIX命令行运行。您需要从firefox提供的Scratchpad运行它。
在Firefox中打开您的网站时,它将始终执行。
在下方编写代码
(function () {
var
getRandomValue = function () {
var
randomValue = Math.floor(Math.random() * (Math.pow(2, 16)))
;
return randomValue
},
setFieldsToRandomValue = function () {
document.getElementById('lst-ib').value = 'TEST' + (getRandomValue());
}()
;
}())
基本上是用于执行JAVASCRIPT和DOM操作的便笺簿。您不能通过unix命令运行它。
答案 3 :(得分:0)
如果您使用的是谷歌浏览器 您需要安装一个名为scratch js的扩展程序,该扩展程序将在那里可用,如果您要逐行运行代码,则可以通过cntrl + shift + i在计算机中进行检查 如果要逐行运行javascript,请转到控制台。 如果您想运行整个程序,则必须安装草稿js作为扩展程序