quora-automation
Version:
Automate creating question and getting all answers
69 lines • 3.76 kB
JavaScript
;
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
Object.defineProperty(exports, "__esModule", { value: true });
const puppeteer_1 = require("puppeteer");
const config_1 = require("./config");
const imgur = require("imgur");
function addQuestion(question, userConfig) {
return __awaiter(this, void 0, void 0, function* () {
const logger = userConfig.logger || console;
const browser = yield puppeteer_1.launch(config_1.launchConfig(userConfig.deploymentType));
const page = yield browser.newPage();
yield page.setUserAgent('Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.106 Safari/537.36');
yield page.goto('https://www.quora.com');
try {
yield page.type('input[tabindex="1"][name="email"]', userConfig.username);
yield page.type('input[tabindex="2"][name="password"]', userConfig.password);
yield page.keyboard.press('Tab');
yield page.keyboard.press('Enter');
yield page.waitForNavigation();
yield page.click('a.deny_push_notif-button');
yield page.waitForSelector(`div.AddQuestionPrompt > a > span`);
yield page.click(`div.AddQuestionPrompt > a > span`);
yield page.waitForSelector(`textarea[placeholder='Start your question with "What", "How", "Why", etc.']`);
yield page.type(`textarea[placeholder='Start your question with "What", "How", "Why", etc.']`, question);
yield page.click('a[id$="submit"]');
try {
yield page.waitForSelector('div.QuestionAddFailed', {
visible: true,
timeout: 2000
});
const answer = yield page.evaluate(() => document.querySelector('div.QuestionAddFailed').textContent);
yield browser.close();
return Promise.resolve(answer.replace('✕', ''));
}
catch (error) {
logger.log(error.message);
try {
yield page.waitForSelector('div.AskToAnswerHeader');
yield page.click('span.modal_close');
}
catch (error) {
const imageName = `error-${new Date().getTime()}.png`;
yield page.screenshot({ path: imageName });
const fileName = yield imgur.uploadFile(`./${imageName}`);
logger.log(`${error.message} Image name ${fileName.data.link}`);
}
yield browser.close();
return Promise.resolve('Successfully added question');
}
}
catch (error) {
const imageName = `error-${new Date().getTime()}.png`;
yield page.screenshot({ path: imageName });
const fileName = yield imgur.uploadFile(`./${imageName}`);
logger.log(`${error.message} Image name ${fileName.data.link}`);
yield browser.close();
return Promise.reject(error.message || 'Something went wrong');
}
});
}
exports.addQuestion = addQuestion;
//# sourceMappingURL=ask-question.js.map