From 645ea995d6c6709f1d25a39940983401598cedb0 Mon Sep 17 00:00:00 2001 From: spiduler Date: Mon, 19 Oct 2020 19:56:55 +0900 Subject: [PATCH] figured out what is until --- index.js | 2 +- src/component/SeleniumBrowser.js | 20 +++++++++++++++++--- src/service/HeadlessService.js | 4 ++-- 3 files changed, 20 insertions(+), 6 deletions(-) diff --git a/index.js b/index.js index 953bf3f..92d1c7f 100644 --- a/index.js +++ b/index.js @@ -63,7 +63,7 @@ process.on('SIGTERM', exitHandler.bind(null, { cleanup: true })); * request handler */ app.post('/', async (req, res, next) => { - const requestPage = () => browser.real(req.body.url).then(html => res.send(html)).catch(e => { + const requestPage = () => browser.get(req.body.uri, req.body.waitElement).then(html => res.send(html)).catch(e => { if(e instanceof NoSuchSessionError) { browser.reset() logger.error({ reason: e.message, url: req.url }, 'Browser session expired') diff --git a/src/component/SeleniumBrowser.js b/src/component/SeleniumBrowser.js index 91dfc40..63d7d24 100644 --- a/src/component/SeleniumBrowser.js +++ b/src/component/SeleniumBrowser.js @@ -35,15 +35,29 @@ class SeleniumBrowser { return new Builder().forBrowser(this.config.browser).setChromeOptions(opts).build(); } - async request(uri) { + request(uri, waitElement) { if (this.isRecaptchaReseponseEmpty) { return '' } else { logger.info('URL %s', uri) if (uri.indexOf('://') > 3) { - return this.driver.get(uri).then(d => this.driver.findElement(By.css('body')).getAttribute('innerHTML')) + return this.driver.get(uri) + // .then(() => { + // if (waitElement) { + // return this.driver.wait(until.elementIsVisible(this.driver.findElement(By.css(waitElement))), 5 * 1000) + // } + // return true + // }) + .then(() => this.driver.findElement(By.css('body'))) + .then(body => body.getAttribute('innerHTML')) .then(html => this.getHtml(html)) - }else { + // .catch(error => { + // logger.error({ message: error.message }, 'No image element') + // return this.driver.findElement(By.css('body')) + // .then(body => body.getAttribute('innerHTML')) + // .then(html => this.getHtml(html)) + // }) + } else { logger.info('URL %s is not valid', uri) return '' } diff --git a/src/service/HeadlessService.js b/src/service/HeadlessService.js index 609a9ce..d9bd61d 100644 --- a/src/service/HeadlessService.js +++ b/src/service/HeadlessService.js @@ -8,8 +8,8 @@ class HeadlessService { } - real(url) { - return browser.request(url) + get(uri, waitElement) { + return browser.request(uri, waitElement) } close() {