You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

12 lines
613 B
JavaScript

const _ = require('lodash');
module.exports = function(config) {
return async function (page) {
const vinSelector = config.vinElementSelector;
const vinRegex = /(?<vin>A\d\w\d{3}\w\d{6})/i;
const possibleVinElements = await page.$$(vinSelector);
const evaluatedVinElements = await Promise.all(possibleVinElements.map(async element => await page.evaluate(el => el.textContent, element)));
const correctElement = _.find(evaluatedVinElements, element => vinRegex.test(element));
return correctElement ? vinRegex.exec(correctElement).groups.vin : null;
}
}