【发布时间】:2020-11-29 09:48:43
【问题描述】:
我的 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)
});
}
【问题讨论】:
-
感谢您的回复。我在发帖之前确实读过这篇文章,但我无法理解它。我会再读一遍。
标签: javascript node.js command-line puppeteer