chromancer
Version:
A powerful command-line interface for automating Chrome browser using Playwright. Perfect for web scraping, automation, testing, and browser workflows.
49 lines (48 loc) • 1.41 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.safeEvaluate = safeEvaluate;
exports.evaluateElementProperty = evaluateElementProperty;
exports.evaluateElementProperties = evaluateElementProperties;
/**
* Safely evaluate JavaScript in the page context with error handling
*/
async function safeEvaluate(page, pageFunction, ...args) {
try {
return await page.evaluate(pageFunction, ...args);
}
catch (error) {
if (error.name === 'SyntaxError') {
throw new Error(`Invalid JavaScript expression: ${error.message}`);
}
throw new Error(`Failed to evaluate: ${error.message}`);
}
}
/**
* Get a single property from an element
*/
async function evaluateElementProperty(element, property) {
return element.evaluate((el, prop) => {
return el[prop];
}, property);
}
/**
* Get multiple properties from an element at once
*/
async function evaluateElementProperties(element, properties) {
const defaultProperties = [
'textContent',
'value',
'id',
'className',
'tagName',
'href',
];
const props = properties || defaultProperties;
return element.evaluate((el, propList) => {
const result = {};
for (const prop of propList) {
result[prop] = el[prop] || null;
}
return result;
}, props);
}