103 lines
3.3 KiB
JavaScript
103 lines
3.3 KiB
JavaScript
const puppeteer = require('puppeteer-core');
|
|
|
|
(async () => {
|
|
try {
|
|
// Connect to existing Chrome instance
|
|
const browser = await puppeteer.connect({
|
|
browserURL: 'http://127.0.0.1:18800'
|
|
});
|
|
|
|
const pages = await browser.pages();
|
|
let page = null;
|
|
|
|
// Find the Mailchimp signup page
|
|
for (const p of pages) {
|
|
const url = p.url();
|
|
if (url.includes('mailchimp.com/signup')) {
|
|
page = p;
|
|
break;
|
|
}
|
|
}
|
|
|
|
if (!page) {
|
|
console.log('Could not find Mailchimp signup page');
|
|
await browser.disconnect();
|
|
process.exit(1);
|
|
}
|
|
|
|
console.log(`Found page: ${page.url()}`);
|
|
|
|
const email = 'jake@burtonmethod.com';
|
|
const password = 'Mailchimp2026!Secure';
|
|
|
|
// Use JavaScript to fill the form and dismiss banner
|
|
await page.evaluate((email, password) => {
|
|
// Dismiss cookie banner
|
|
const dismissBtn = document.querySelector('button');
|
|
const buttons = Array.from(document.querySelectorAll('button'));
|
|
const dismissButton = buttons.find(btn => btn.textContent.includes('Dismiss'));
|
|
if (dismissButton) {
|
|
dismissButton.click();
|
|
console.log('Clicked dismiss button');
|
|
}
|
|
|
|
// Wait a bit for banner to disappear
|
|
setTimeout(() => {
|
|
// Find and fill the form fields
|
|
const inputs = document.querySelectorAll('input[type="text"], input[type="email"]');
|
|
const passwordInput = document.querySelector('input[type="password"]');
|
|
|
|
// Fill email (first input)
|
|
if (inputs[0]) {
|
|
inputs[0].value = email;
|
|
inputs[0].dispatchEvent(new Event('input', { bubbles: true }));
|
|
inputs[0].dispatchEvent(new Event('change', { bubbles: true }));
|
|
console.log('Filled email field');
|
|
}
|
|
|
|
// Fill username (second input)
|
|
if (inputs[1]) {
|
|
inputs[1].value = email;
|
|
inputs[1].dispatchEvent(new Event('input', { bubbles: true }));
|
|
inputs[1].dispatchEvent(new Event('change', { bubbles: true }));
|
|
console.log('Filled username field');
|
|
}
|
|
|
|
// Fill password
|
|
if (passwordInput) {
|
|
passwordInput.value = password;
|
|
passwordInput.dispatchEvent(new Event('input', { bubbles: true }));
|
|
passwordInput.dispatchEvent(new Event('change', { bubbles: true }));
|
|
console.log('Filled password field');
|
|
}
|
|
|
|
// Click Sign up button
|
|
setTimeout(() => {
|
|
const signupButton = buttons.find(btn => btn.textContent.includes('Sign up'));
|
|
if (signupButton) {
|
|
signupButton.click();
|
|
console.log('Clicked Sign up button');
|
|
}
|
|
}, 500);
|
|
}, 1000);
|
|
}, email, password);
|
|
|
|
console.log('Form fill script executed');
|
|
|
|
// Wait for navigation
|
|
await page.waitForNavigation({ waitUntil: 'networkidle0', timeout: 30000 });
|
|
console.log(`Navigated to: ${page.url()}`);
|
|
|
|
// Take screenshot
|
|
await page.screenshot({ path: '/Users/jakeshore/.clawdbot/workspace/signup_result.png' });
|
|
console.log('Screenshot saved');
|
|
|
|
await browser.disconnect();
|
|
console.log('Signup completed successfully');
|
|
|
|
} catch (error) {
|
|
console.error('Error:', error.message);
|
|
process.exit(1);
|
|
}
|
|
})();
|