@skrillex1224/playwright-toolkit 2.1.278 → 2.1.279
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 +84 -115
- package/dist/index.cjs.map +2 -2
- package/dist/index.js +84 -115
- package/dist/index.js.map +2 -2
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -4683,38 +4683,13 @@ var buildActionOptions = (options = {}) => {
|
|
|
4683
4683
|
if (options && options.timeout != null) {
|
|
4684
4684
|
actionOptions.timeout = options.timeout;
|
|
4685
4685
|
}
|
|
4686
|
-
|
|
4687
|
-
actionOptions.force = options.force;
|
|
4688
|
-
}
|
|
4686
|
+
actionOptions.force = true;
|
|
4689
4687
|
const humanConfig = buildTypingHumanConfig(options);
|
|
4690
4688
|
if (humanConfig) {
|
|
4691
4689
|
actionOptions.human_config = humanConfig;
|
|
4692
4690
|
}
|
|
4693
4691
|
return actionOptions;
|
|
4694
4692
|
};
|
|
4695
|
-
var getErrorMessage = (error) => {
|
|
4696
|
-
if (typeof error === "string") return error;
|
|
4697
|
-
if (error && typeof error.message === "string") return error.message;
|
|
4698
|
-
return String(error ?? "");
|
|
4699
|
-
};
|
|
4700
|
-
var isPointerEventsCoveredError = (error) => {
|
|
4701
|
-
const message = getErrorMessage(error).toLowerCase();
|
|
4702
|
-
return message.includes("pointer_events") && (message.includes("covered by") || message.includes("receiving events"));
|
|
4703
|
-
};
|
|
4704
|
-
var withPointerEventsForceFallback = async (label, options, operation) => {
|
|
4705
|
-
try {
|
|
4706
|
-
return await operation(options);
|
|
4707
|
-
} catch (error) {
|
|
4708
|
-
if (options?.force || !isPointerEventsCoveredError(error)) {
|
|
4709
|
-
throw error;
|
|
4710
|
-
}
|
|
4711
|
-
logger7.warn(`${label}: cloakbrowser pointer_events check failed, retrying with force=true (${getErrorMessage(error)})`);
|
|
4712
|
-
return await operation({
|
|
4713
|
-
...options || {},
|
|
4714
|
-
force: true
|
|
4715
|
-
});
|
|
4716
|
-
}
|
|
4717
|
-
};
|
|
4718
4693
|
var ensureDesktopHumanized = async (page) => {
|
|
4719
4694
|
if (!page || typeof page !== "object") {
|
|
4720
4695
|
throw new Error("Humanize requires a Playwright page");
|
|
@@ -4792,55 +4767,53 @@ var humanMoveToPoint = async (page, point) => {
|
|
|
4792
4767
|
};
|
|
4793
4768
|
var doDesktopHumanClick = async (page, target, options = {}) => {
|
|
4794
4769
|
await ensureDesktopHumanized(page);
|
|
4795
|
-
|
|
4796
|
-
|
|
4797
|
-
|
|
4798
|
-
|
|
4770
|
+
if (target == null) {
|
|
4771
|
+
const cursor = page._humanCursor || { x: 0, y: 0 };
|
|
4772
|
+
await page.mouse.click(cursor.x || 0, cursor.y || 0);
|
|
4773
|
+
return true;
|
|
4774
|
+
}
|
|
4775
|
+
if (isPoint2(target)) {
|
|
4776
|
+
return humanMoveToPoint(page, target).then(async () => {
|
|
4777
|
+
await page.mouse.click(Number(target.x), Number(target.y));
|
|
4799
4778
|
return true;
|
|
4800
|
-
}
|
|
4801
|
-
|
|
4802
|
-
|
|
4803
|
-
|
|
4804
|
-
|
|
4805
|
-
|
|
4806
|
-
|
|
4807
|
-
|
|
4808
|
-
if (typeof target === "string") {
|
|
4809
|
-
if (!throwOnMissing) {
|
|
4810
|
-
const existingHandle = await page.$(target);
|
|
4811
|
-
if (!existingHandle) {
|
|
4812
|
-
return false;
|
|
4813
|
-
}
|
|
4814
|
-
await existingHandle.click(buildActionOptions(effectiveOptions));
|
|
4815
|
-
return true;
|
|
4779
|
+
});
|
|
4780
|
+
}
|
|
4781
|
+
const throwOnMissing = options.throwOnMissing !== false;
|
|
4782
|
+
if (typeof target === "string") {
|
|
4783
|
+
if (!throwOnMissing) {
|
|
4784
|
+
const existingHandle = await page.$(target);
|
|
4785
|
+
if (!existingHandle) {
|
|
4786
|
+
return false;
|
|
4816
4787
|
}
|
|
4817
|
-
await
|
|
4788
|
+
await existingHandle.click(buildActionOptions(options));
|
|
4818
4789
|
return true;
|
|
4819
4790
|
}
|
|
4820
|
-
|
|
4821
|
-
|
|
4822
|
-
|
|
4823
|
-
|
|
4824
|
-
|
|
4825
|
-
|
|
4826
|
-
|
|
4827
|
-
|
|
4828
|
-
|
|
4829
|
-
|
|
4830
|
-
if (!box) {
|
|
4831
|
-
if (throwOnMissing) {
|
|
4832
|
-
throw new Error("\u65E0\u6CD5\u83B7\u53D6\u5143\u7D20\u4F4D\u7F6E");
|
|
4833
|
-
}
|
|
4834
|
-
return false;
|
|
4835
|
-
}
|
|
4836
|
-
await page.mouse.click(box.x + box.width / 2, box.y + box.height / 2);
|
|
4791
|
+
await page.click(target, buildActionOptions(options));
|
|
4792
|
+
return true;
|
|
4793
|
+
}
|
|
4794
|
+
const { target: resolvedTarget, dispose } = await resolvePatchedTarget(page, target, { throwOnMissing });
|
|
4795
|
+
try {
|
|
4796
|
+
if (!resolvedTarget) {
|
|
4797
|
+
return false;
|
|
4798
|
+
}
|
|
4799
|
+
if (typeof resolvedTarget.click === "function") {
|
|
4800
|
+
await resolvedTarget.click(buildActionOptions(options));
|
|
4837
4801
|
return true;
|
|
4838
|
-
}
|
|
4839
|
-
|
|
4840
|
-
|
|
4802
|
+
}
|
|
4803
|
+
const box = await resolvedTarget.boundingBox?.();
|
|
4804
|
+
if (!box) {
|
|
4805
|
+
if (throwOnMissing) {
|
|
4806
|
+
throw new Error("\u65E0\u6CD5\u83B7\u53D6\u5143\u7D20\u4F4D\u7F6E");
|
|
4841
4807
|
}
|
|
4808
|
+
return false;
|
|
4842
4809
|
}
|
|
4843
|
-
|
|
4810
|
+
await page.mouse.click(box.x + box.width / 2, box.y + box.height / 2);
|
|
4811
|
+
return true;
|
|
4812
|
+
} finally {
|
|
4813
|
+
if (typeof dispose === "function") {
|
|
4814
|
+
await dispose();
|
|
4815
|
+
}
|
|
4816
|
+
}
|
|
4844
4817
|
};
|
|
4845
4818
|
var CloakBrowserHumanize = {
|
|
4846
4819
|
jitterMs(base, jitterPercent = 0.3) {
|
|
@@ -4867,7 +4840,7 @@ var CloakBrowserHumanize = {
|
|
|
4867
4840
|
return false;
|
|
4868
4841
|
}
|
|
4869
4842
|
if (typeof resolvedTarget.hover === "function") {
|
|
4870
|
-
await resolvedTarget.hover();
|
|
4843
|
+
await resolvedTarget.hover({ force: true });
|
|
4871
4844
|
return true;
|
|
4872
4845
|
}
|
|
4873
4846
|
const box = await resolvedTarget.boundingBox?.();
|
|
@@ -4969,24 +4942,22 @@ var CloakBrowserHumanize = {
|
|
|
4969
4942
|
return await MobileHumanize.humanType(page, selector, text, options);
|
|
4970
4943
|
}
|
|
4971
4944
|
await ensureDesktopHumanized(page);
|
|
4972
|
-
|
|
4973
|
-
|
|
4974
|
-
|
|
4975
|
-
|
|
4976
|
-
|
|
4945
|
+
const actionOptions = buildActionOptions(options);
|
|
4946
|
+
if (typeof selector === "string") {
|
|
4947
|
+
await page.type(selector, text, actionOptions);
|
|
4948
|
+
return;
|
|
4949
|
+
}
|
|
4950
|
+
const { target: resolvedTarget, dispose } = await resolvePatchedTarget(page, selector, { throwOnMissing: true });
|
|
4951
|
+
try {
|
|
4952
|
+
if (!resolvedTarget || typeof resolvedTarget.type !== "function") {
|
|
4953
|
+
throw new Error("\u76EE\u6807\u5143\u7D20\u4E0D\u652F\u6301 type()");
|
|
4977
4954
|
}
|
|
4978
|
-
|
|
4979
|
-
|
|
4980
|
-
|
|
4981
|
-
|
|
4982
|
-
}
|
|
4983
|
-
await resolvedTarget.type(text, actionOptions);
|
|
4984
|
-
} finally {
|
|
4985
|
-
if (typeof dispose === "function") {
|
|
4986
|
-
await dispose();
|
|
4987
|
-
}
|
|
4955
|
+
await resolvedTarget.type(text, actionOptions);
|
|
4956
|
+
} finally {
|
|
4957
|
+
if (typeof dispose === "function") {
|
|
4958
|
+
await dispose();
|
|
4988
4959
|
}
|
|
4989
|
-
}
|
|
4960
|
+
}
|
|
4990
4961
|
},
|
|
4991
4962
|
async humanPress(page, targetOrKey, maybeKey, options = {}) {
|
|
4992
4963
|
if (isMobilePage(page)) {
|
|
@@ -5004,38 +4975,36 @@ var CloakBrowserHumanize = {
|
|
|
5004
4975
|
});
|
|
5005
4976
|
return true;
|
|
5006
4977
|
}
|
|
5007
|
-
|
|
5008
|
-
|
|
5009
|
-
|
|
4978
|
+
if (typeof targetOrKey === "string") {
|
|
4979
|
+
await page.press(targetOrKey, key, buildActionOptions(pressOptions));
|
|
4980
|
+
return true;
|
|
4981
|
+
}
|
|
4982
|
+
const { target: resolvedTarget, dispose } = await resolvePatchedTarget(page, targetOrKey, {
|
|
4983
|
+
throwOnMissing: pressOptions.throwOnMissing !== false
|
|
4984
|
+
});
|
|
4985
|
+
try {
|
|
4986
|
+
if (!resolvedTarget) {
|
|
4987
|
+
return false;
|
|
4988
|
+
}
|
|
4989
|
+
if (typeof resolvedTarget.press === "function") {
|
|
4990
|
+
await resolvedTarget.press(key, buildActionOptions(pressOptions));
|
|
5010
4991
|
return true;
|
|
5011
4992
|
}
|
|
5012
|
-
|
|
5013
|
-
|
|
4993
|
+
await doDesktopHumanClick(page, targetOrKey, {
|
|
4994
|
+
...pressOptions,
|
|
4995
|
+
reactionDelay: pressOptions.focusDelay ?? 180
|
|
5014
4996
|
});
|
|
5015
|
-
|
|
5016
|
-
|
|
5017
|
-
|
|
5018
|
-
|
|
5019
|
-
|
|
5020
|
-
|
|
5021
|
-
|
|
5022
|
-
|
|
5023
|
-
await
|
|
5024
|
-
...effectiveOptions,
|
|
5025
|
-
reactionDelay: effectiveOptions.focusDelay ?? 180
|
|
5026
|
-
});
|
|
5027
|
-
await jitterSleep(effectiveOptions.reactionDelay ?? 180, 0.45);
|
|
5028
|
-
await page.keyboard.press(key, {
|
|
5029
|
-
...effectiveOptions.keyboardOptions || {},
|
|
5030
|
-
delay: jitterMs(effectiveOptions.holdDelay ?? 45, 0.5)
|
|
5031
|
-
});
|
|
5032
|
-
return true;
|
|
5033
|
-
} finally {
|
|
5034
|
-
if (typeof dispose === "function") {
|
|
5035
|
-
await dispose();
|
|
5036
|
-
}
|
|
4997
|
+
await jitterSleep(pressOptions.reactionDelay ?? 180, 0.45);
|
|
4998
|
+
await page.keyboard.press(key, {
|
|
4999
|
+
...pressOptions.keyboardOptions || {},
|
|
5000
|
+
delay: jitterMs(pressOptions.holdDelay ?? 45, 0.5)
|
|
5001
|
+
});
|
|
5002
|
+
return true;
|
|
5003
|
+
} finally {
|
|
5004
|
+
if (typeof dispose === "function") {
|
|
5005
|
+
await dispose();
|
|
5037
5006
|
}
|
|
5038
|
-
}
|
|
5007
|
+
}
|
|
5039
5008
|
},
|
|
5040
5009
|
async humanClear(page, selector) {
|
|
5041
5010
|
if (isMobilePage(page)) {
|
|
@@ -5043,10 +5012,10 @@ var CloakBrowserHumanize = {
|
|
|
5043
5012
|
}
|
|
5044
5013
|
await ensureDesktopHumanized(page);
|
|
5045
5014
|
if (typeof page.clear === "function") {
|
|
5046
|
-
await page.clear(selector);
|
|
5015
|
+
await page.clear(selector, { force: true });
|
|
5047
5016
|
return;
|
|
5048
5017
|
}
|
|
5049
|
-
await page.fill(selector, "");
|
|
5018
|
+
await page.fill(selector, "", { force: true });
|
|
5050
5019
|
},
|
|
5051
5020
|
async warmUpBrowsing(page, baseDuration = 3500) {
|
|
5052
5021
|
if (isMobilePage(page)) {
|