@skrillex1224/playwright-toolkit 3.0.5 → 3.0.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.cjs +45 -9
- package/dist/index.cjs.map +2 -2
- package/dist/index.js +45 -9
- package/dist/index.js.map +2 -2
- package/package.json +1 -1
package/dist/index.cjs
CHANGED
|
@@ -6303,7 +6303,7 @@ function useCaptchaMonitor(page, options) {
|
|
|
6303
6303
|
let isStopped = false;
|
|
6304
6304
|
let isHandling = false;
|
|
6305
6305
|
let frameHandler = null;
|
|
6306
|
-
let
|
|
6306
|
+
let domFrameHandler = null;
|
|
6307
6307
|
const triggerDetected = async () => {
|
|
6308
6308
|
if (isStopped || isHandling) return;
|
|
6309
6309
|
isHandling = true;
|
|
@@ -6315,12 +6315,16 @@ function useCaptchaMonitor(page, options) {
|
|
|
6315
6315
|
};
|
|
6316
6316
|
const cleanupFns = [];
|
|
6317
6317
|
if (domSelector) {
|
|
6318
|
-
exposedFunctionName = `__c_d_${(0, import_uuid.v4)().replace(/-/g, "_")}`;
|
|
6318
|
+
const exposedFunctionName = `__c_d_${(0, import_uuid.v4)().replace(/-/g, "_")}`;
|
|
6319
6319
|
const cleanerName = `__c_cleaner_${(0, import_uuid.v4)().replace(/-/g, "_")}`;
|
|
6320
|
-
|
|
6321
|
-
});
|
|
6322
|
-
page.addInitScript(({ selector, callbackName, cleanerName: cleanupName }) => {
|
|
6320
|
+
const installDomMonitor = ({ selector, callbackName, cleanerName: cleanupName }) => {
|
|
6323
6321
|
(() => {
|
|
6322
|
+
if (typeof window[cleanupName] === "function") {
|
|
6323
|
+
try {
|
|
6324
|
+
window[cleanupName]();
|
|
6325
|
+
} catch {
|
|
6326
|
+
}
|
|
6327
|
+
}
|
|
6324
6328
|
let observer = null;
|
|
6325
6329
|
const checkAndReport = () => {
|
|
6326
6330
|
const element = document.querySelector(selector);
|
|
@@ -6346,7 +6350,7 @@ function useCaptchaMonitor(page, options) {
|
|
|
6346
6350
|
}
|
|
6347
6351
|
};
|
|
6348
6352
|
if (document.readyState === "loading") {
|
|
6349
|
-
window.addEventListener("DOMContentLoaded", mountObserver);
|
|
6353
|
+
window.addEventListener("DOMContentLoaded", mountObserver, { once: true });
|
|
6350
6354
|
} else {
|
|
6351
6355
|
mountObserver();
|
|
6352
6356
|
}
|
|
@@ -6357,9 +6361,41 @@ function useCaptchaMonitor(page, options) {
|
|
|
6357
6361
|
}
|
|
6358
6362
|
};
|
|
6359
6363
|
})();
|
|
6360
|
-
}
|
|
6361
|
-
|
|
6364
|
+
};
|
|
6365
|
+
const installArgs = {
|
|
6366
|
+
selector: domSelector,
|
|
6367
|
+
callbackName: exposedFunctionName,
|
|
6368
|
+
cleanerName
|
|
6369
|
+
};
|
|
6370
|
+
const domMonitorReady = (async () => {
|
|
6371
|
+
await page.exposeFunction(exposedFunctionName, triggerDetected);
|
|
6372
|
+
await page.addInitScript(installDomMonitor, installArgs);
|
|
6373
|
+
await page.evaluate(installDomMonitor, installArgs).catch(() => {
|
|
6374
|
+
});
|
|
6375
|
+
logger12.success("useCaptchaMonitor", `DOM \u76D1\u63A7\u5DF2\u542F\u7528\uFF1A${domSelector}`);
|
|
6376
|
+
})().catch((error) => {
|
|
6377
|
+
if (isStopped) {
|
|
6378
|
+
return;
|
|
6379
|
+
}
|
|
6380
|
+
logger12.warn(`DOM \u76D1\u63A7\u521D\u59CB\u5316\u5931\u8D25 (${domSelector}): ${error?.message || error}`);
|
|
6381
|
+
});
|
|
6382
|
+
domFrameHandler = async (frame) => {
|
|
6383
|
+
if (frame !== page.mainFrame() || isStopped) {
|
|
6384
|
+
return;
|
|
6385
|
+
}
|
|
6386
|
+
await domMonitorReady;
|
|
6387
|
+
if (isStopped) {
|
|
6388
|
+
return;
|
|
6389
|
+
}
|
|
6390
|
+
await page.evaluate(installDomMonitor, installArgs).catch(() => {
|
|
6391
|
+
});
|
|
6392
|
+
};
|
|
6393
|
+
page.on("framenavigated", domFrameHandler);
|
|
6362
6394
|
cleanupFns.push(async () => {
|
|
6395
|
+
if (domFrameHandler) {
|
|
6396
|
+
page.off("framenavigated", domFrameHandler);
|
|
6397
|
+
}
|
|
6398
|
+
await domMonitorReady;
|
|
6363
6399
|
try {
|
|
6364
6400
|
await page.evaluate((name) => {
|
|
6365
6401
|
if (window[name]) {
|
|
@@ -6390,10 +6426,10 @@ function useCaptchaMonitor(page, options) {
|
|
|
6390
6426
|
return {
|
|
6391
6427
|
stop: async () => {
|
|
6392
6428
|
logger12.info("\u6B63\u5728\u505C\u6B62\u9A8C\u8BC1\u7801\u76D1\u63A7...");
|
|
6429
|
+
isStopped = true;
|
|
6393
6430
|
for (const fn of cleanupFns) {
|
|
6394
6431
|
await fn();
|
|
6395
6432
|
}
|
|
6396
|
-
isStopped = true;
|
|
6397
6433
|
}
|
|
6398
6434
|
};
|
|
6399
6435
|
}
|