如何从命令行将参数传递到我的 Javascript 代码中?

我的 JS 文件“login.js”可以使用“node login.js”从命令行运行。如果我想更改使用的 URL,我必须进入文件并编辑 URL。


我希望能够通过命令行将 URL 作为参数传递,例如“node login.js https://example.com”,并让代码使用该 URL。我认为这很简单,但我似乎无法通过在线阅读来解决它。


const puppeteer = require('puppeteer');

const C = require('./constants');

const USERNAME_SELECTOR = '#email';

const PASSWORD_SELECTOR = '#password';

const CTA_SELECTOR = '#next';

const CTA_SELECTOR2 = '#submit-btn';



async function startBrowser() {

  const browser = await puppeteer.launch();

  const page = await browser.newPage();

  return {browser, page};

}



async function closeBrowser(browser) {

  return browser.close();

}


async function playTest(url) {

  const {browser, page} = await startBrowser();

  page.setViewport({width: 1366, height: 768});

  await page.goto(url);

  await page.waitForSelector(USERNAME_SELECTOR);

  await page.click(USERNAME_SELECTOR);

  await page.keyboard.type(C.username);

  await page.click(CTA_SELECTOR);

  console.log('before waiting');

await delay(10000);

console.log('after waiting');

  await page.click(PASSWORD_SELECTOR);

  await page.keyboard.type(C.password);

  await page.click(CTA_SELECTOR2);

  await page.waitForNavigation();

  await page.screenshot({path: 'screenshot.png'});

}


(async () => {

  await playTest("https://example.com");

  process.exit(1);

})();


function delay(time) {

  return new Promise(function(resolve) { 

      setTimeout(resolve, time)

  });

}


慕雪6442864
浏览 73回答 1
1回答

慕田峪4524236

在许多程序(包括节点)中,参数可以通过我们称为标志的东西传递给您的脚本。Node 本身是一个程序,当您编写 时node foo.js,foo.js它本身就是节点程序的一个参数。要通过命令行使用标志通过双破折号传递参数。例子:node foo.js bar/baz/index.html现在可以访问该值,通过process.argv该值是传递给它的所有参数的数组。它看起来像这样['node.exe', 'foo.js', 'bar/baz/indez.html']
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript