From 02a7501e9d858b48e4e45d22c09e1b3992229b13 Mon Sep 17 00:00:00 2001 From: Claw Date: Fri, 6 Mar 2026 16:53:25 +0000 Subject: [PATCH] fix: use aria-label selectors for LinkedIn Easy Apply button (class names are now hashed) --- lib/apply/easy_apply.mjs | 2 +- lib/constants.mjs | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/lib/apply/easy_apply.mjs b/lib/apply/easy_apply.mjs index 524962a..ed9882b 100644 --- a/lib/apply/easy_apply.mjs +++ b/lib/apply/easy_apply.mjs @@ -28,7 +28,7 @@ export async function apply(page, job, formFiller) { Object.assign(meta, pageMeta); // Verify Easy Apply button - const eaBtn = await page.$(`${LINKEDIN_APPLY_BUTTON_SELECTOR}[aria-label*="Easy Apply"]`); + const eaBtn = await page.$(LINKEDIN_APPLY_BUTTON_SELECTOR); if (!eaBtn) return { status: 'skipped_easy_apply_unsupported', meta }; // Click Easy Apply diff --git a/lib/constants.mjs b/lib/constants.mjs index 5c6d104..6f9a12d 100644 --- a/lib/constants.mjs +++ b/lib/constants.mjs @@ -23,8 +23,8 @@ export const APPLY_BETWEEN_DELAY_JITTER = 1000; // --- LinkedIn --- export const LINKEDIN_BASE = 'https://www.linkedin.com'; -export const LINKEDIN_EASY_APPLY_MODAL_SELECTOR = '.jobs-easy-apply-modal'; -export const LINKEDIN_APPLY_BUTTON_SELECTOR = 'button.jobs-apply-button'; +export const LINKEDIN_EASY_APPLY_MODAL_SELECTOR = '[role="dialog"]'; +export const LINKEDIN_APPLY_BUTTON_SELECTOR = 'button[aria-label*="Easy Apply"]'; export const LINKEDIN_SUBMIT_SELECTOR = 'button[aria-label="Submit application"]'; export const LINKEDIN_NEXT_SELECTOR = 'button[aria-label="Continue to next step"]'; export const LINKEDIN_REVIEW_SELECTOR = 'button[aria-label="Review your application"]';