@skrillex1224/playwright-toolkit 2.1.280 → 2.1.282
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 +90 -271
- package/dist/index.cjs.map +3 -3
- package/dist/index.js +90 -271
- package/dist/index.js.map +3 -3
- package/package.json +1 -1
package/dist/index.cjs
CHANGED
|
@@ -4731,330 +4731,149 @@ var DefaultHumanize = {
|
|
|
4731
4731
|
|
|
4732
4732
|
// src/internals/humanize/cloakbrowser.js
|
|
4733
4733
|
var import_delay4 = __toESM(require("delay"), 1);
|
|
4734
|
-
var isPageLike2 = (value) => value && typeof value === "object" && typeof value.evaluate === "function";
|
|
4735
|
-
var isPoint2 = (value) => value && typeof value === "object" && Number.isFinite(Number(value.x)) && Number.isFinite(Number(value.y));
|
|
4736
4734
|
var resolveDeviceFromPage3 = (page) => normalizeDevice(page?.[PageRuntimeStateKey]?.device);
|
|
4737
4735
|
var isMobilePage = (page) => resolveDeviceFromPage3(page) === Device.Mobile;
|
|
4738
|
-
var
|
|
4739
|
-
var
|
|
4740
|
-
|
|
4741
|
-
|
|
4742
|
-
|
|
4743
|
-
if (typeof target.count === "function") {
|
|
4744
|
-
const count = await target.count().catch(() => 0);
|
|
4745
|
-
return count > 0;
|
|
4746
|
-
}
|
|
4747
|
-
if (typeof target.elementHandle === "function") {
|
|
4748
|
-
const handle = await target.elementHandle().catch(() => null);
|
|
4749
|
-
try {
|
|
4750
|
-
return Boolean(handle);
|
|
4751
|
-
} finally {
|
|
4752
|
-
await handle?.dispose?.().catch(() => {
|
|
4753
|
-
});
|
|
4754
|
-
}
|
|
4755
|
-
}
|
|
4756
|
-
return true;
|
|
4757
|
-
};
|
|
4758
|
-
var getTargetBoundingBox2 = async (target) => {
|
|
4759
|
-
if (!target) {
|
|
4760
|
-
return null;
|
|
4761
|
-
}
|
|
4762
|
-
if (typeof target.boundingBox === "function") {
|
|
4763
|
-
return await target.boundingBox().catch(() => null);
|
|
4764
|
-
}
|
|
4765
|
-
if (typeof target.elementHandle === "function") {
|
|
4766
|
-
const handle = await target.elementHandle().catch(() => null);
|
|
4767
|
-
try {
|
|
4768
|
-
return await handle?.boundingBox?.().catch(() => null);
|
|
4769
|
-
} finally {
|
|
4770
|
-
await handle?.dispose?.().catch(() => {
|
|
4771
|
-
});
|
|
4772
|
-
}
|
|
4773
|
-
}
|
|
4774
|
-
return null;
|
|
4775
|
-
};
|
|
4776
|
-
var resolveActionTarget = async (page, target, { throwOnMissing = true } = {}) => {
|
|
4777
|
-
if (target == null) {
|
|
4778
|
-
return null;
|
|
4779
|
-
}
|
|
4780
|
-
const resolvedTarget = resolveNativeTarget2(page, target);
|
|
4781
|
-
if (throwOnMissing || await targetExists(resolvedTarget)) {
|
|
4782
|
-
return resolvedTarget;
|
|
4783
|
-
}
|
|
4784
|
-
return null;
|
|
4785
|
-
};
|
|
4786
|
-
var readViewportScroll = async (page) => {
|
|
4787
|
-
return await page.evaluate(() => ({ x: window.scrollX, y: window.scrollY })).catch(() => ({ x: 0, y: 0 }));
|
|
4788
|
-
};
|
|
4789
|
-
var buildTypingHumanConfig = (options = {}) => {
|
|
4790
|
-
const humanConfig = {};
|
|
4791
|
-
if (Number.isFinite(Number(options.baseDelay))) {
|
|
4792
|
-
humanConfig.typing_delay = Number(options.baseDelay);
|
|
4793
|
-
}
|
|
4794
|
-
if (Number.isFinite(Number(options.pauseProbability))) {
|
|
4795
|
-
humanConfig.typing_pause_chance = Number(options.pauseProbability);
|
|
4796
|
-
}
|
|
4797
|
-
if (Number.isFinite(Number(options.pauseBase))) {
|
|
4798
|
-
const basePause = Math.max(40, Number(options.pauseBase));
|
|
4799
|
-
humanConfig.typing_pause_range = [
|
|
4800
|
-
Math.round(basePause * 0.5),
|
|
4801
|
-
Math.round(basePause * 1.5)
|
|
4802
|
-
];
|
|
4803
|
-
}
|
|
4804
|
-
return Object.keys(humanConfig).length > 0 ? humanConfig : null;
|
|
4805
|
-
};
|
|
4806
|
-
var buildActionOptions = (options = {}) => {
|
|
4807
|
-
const actionOptions = {
|
|
4808
|
-
force: true
|
|
4809
|
-
};
|
|
4810
|
-
if (options && options.timeout != null) {
|
|
4811
|
-
actionOptions.timeout = options.timeout;
|
|
4812
|
-
}
|
|
4813
|
-
const humanConfig = buildTypingHumanConfig(options);
|
|
4814
|
-
if (humanConfig) {
|
|
4815
|
-
actionOptions.human_config = humanConfig;
|
|
4816
|
-
}
|
|
4817
|
-
return actionOptions;
|
|
4818
|
-
};
|
|
4819
|
-
var jitterSleep = async (baseMs, jitterPercent = 0.3) => {
|
|
4820
|
-
await (0, import_delay4.default)(jitterMs(baseMs, jitterPercent));
|
|
4821
|
-
};
|
|
4822
|
-
var moveCursorToPoint = async (page, point) => {
|
|
4823
|
-
await page.mouse.move(Number(point.x), Number(point.y));
|
|
4824
|
-
return true;
|
|
4825
|
-
};
|
|
4826
|
-
var CloakBrowserHumanize = {
|
|
4736
|
+
var isPageLike2 = (value) => value && typeof value === "object" && typeof value.evaluate === "function";
|
|
4737
|
+
var isPoint2 = (value) => value && typeof value === "object" && Number.isFinite(Number(value.x)) && Number.isFinite(Number(value.y));
|
|
4738
|
+
var resolveTarget = (page, target) => typeof target === "string" ? page.locator(target).first() : target;
|
|
4739
|
+
var sleep = (base, jitter = 0.3) => (0, import_delay4.default)(jitterMs(base, jitter));
|
|
4740
|
+
var DesktopCloakHumanize = {
|
|
4827
4741
|
jitterMs(base, jitterPercent = 0.3) {
|
|
4828
4742
|
return jitterMs(base, jitterPercent);
|
|
4829
4743
|
},
|
|
4830
4744
|
async initializeCursor(page) {
|
|
4831
|
-
if (isMobilePage(page)) {
|
|
4832
|
-
return await MobileHumanize.initializeCursor(page);
|
|
4833
|
-
}
|
|
4834
4745
|
return Boolean(page);
|
|
4835
4746
|
},
|
|
4836
4747
|
async humanMove(page, target) {
|
|
4837
|
-
if (
|
|
4838
|
-
return await MobileHumanize.humanMove(page, target);
|
|
4839
|
-
}
|
|
4748
|
+
if (target == null) return false;
|
|
4840
4749
|
if (isPoint2(target)) {
|
|
4841
|
-
|
|
4842
|
-
}
|
|
4843
|
-
const resolvedTarget = await resolveActionTarget(page, target, { throwOnMissing: false });
|
|
4844
|
-
if (!resolvedTarget) {
|
|
4845
|
-
return false;
|
|
4846
|
-
}
|
|
4847
|
-
if (typeof resolvedTarget.hover === "function") {
|
|
4848
|
-
await resolvedTarget.hover({ force: true });
|
|
4750
|
+
await page.mouse.move(Number(target.x), Number(target.y));
|
|
4849
4751
|
return true;
|
|
4850
4752
|
}
|
|
4851
|
-
|
|
4852
|
-
|
|
4853
|
-
return false;
|
|
4854
|
-
}
|
|
4855
|
-
return await moveCursorToPoint(page, {
|
|
4856
|
-
x: box.x + box.width / 2,
|
|
4857
|
-
y: box.y + box.height / 2
|
|
4858
|
-
});
|
|
4753
|
+
await resolveTarget(page, target).hover();
|
|
4754
|
+
return true;
|
|
4859
4755
|
},
|
|
4860
|
-
async humanScroll(page, target
|
|
4861
|
-
|
|
4862
|
-
|
|
4863
|
-
|
|
4864
|
-
|
|
4865
|
-
if (!resolvedTarget) {
|
|
4866
|
-
return { element: null, didScroll: false, restore: null };
|
|
4867
|
-
}
|
|
4868
|
-
const before = await readViewportScroll(page);
|
|
4869
|
-
await resolvedTarget.scrollIntoViewIfNeeded?.().catch(() => {
|
|
4870
|
-
});
|
|
4871
|
-
const after = await readViewportScroll(page);
|
|
4872
|
-
return {
|
|
4873
|
-
element: resolvedTarget,
|
|
4874
|
-
didScroll: before.x !== after.x || before.y !== after.y,
|
|
4875
|
-
restore: null
|
|
4876
|
-
};
|
|
4756
|
+
async humanScroll(page, target) {
|
|
4757
|
+
const element = resolveTarget(page, target);
|
|
4758
|
+
if (!element) return { element: null, didScroll: false, restore: null };
|
|
4759
|
+
await element.scrollIntoViewIfNeeded?.();
|
|
4760
|
+
return { element, didScroll: true, restore: null };
|
|
4877
4761
|
},
|
|
4878
|
-
async humanClick(page, target
|
|
4879
|
-
if (isMobilePage(page)) {
|
|
4880
|
-
return await MobileHumanize.humanClick(page, target, options);
|
|
4881
|
-
}
|
|
4762
|
+
async humanClick(page, target) {
|
|
4882
4763
|
if (target == null) {
|
|
4883
|
-
|
|
4884
|
-
await page.mouse.click(x || 0, y || 0);
|
|
4764
|
+
await page.mouse.click(0, 0);
|
|
4885
4765
|
return true;
|
|
4886
4766
|
}
|
|
4887
4767
|
if (isPoint2(target)) {
|
|
4888
4768
|
await page.mouse.click(Number(target.x), Number(target.y));
|
|
4889
4769
|
return true;
|
|
4890
4770
|
}
|
|
4891
|
-
|
|
4892
|
-
|
|
4893
|
-
});
|
|
4894
|
-
if (!resolvedTarget) {
|
|
4895
|
-
return false;
|
|
4896
|
-
}
|
|
4897
|
-
if (typeof resolvedTarget.click === "function") {
|
|
4898
|
-
await resolvedTarget.click(buildActionOptions(options));
|
|
4771
|
+
if (typeof target === "string") {
|
|
4772
|
+
await page.click(target);
|
|
4899
4773
|
return true;
|
|
4900
4774
|
}
|
|
4901
|
-
|
|
4902
|
-
if (!box) {
|
|
4903
|
-
if (options.throwOnMissing !== false) {
|
|
4904
|
-
throw new Error("\u65E0\u6CD5\u83B7\u53D6\u5143\u7D20\u4F4D\u7F6E");
|
|
4905
|
-
}
|
|
4906
|
-
return false;
|
|
4907
|
-
}
|
|
4908
|
-
await page.mouse.click(box.x + box.width / 2, box.y + box.height / 2);
|
|
4775
|
+
await target.click();
|
|
4909
4776
|
return true;
|
|
4910
4777
|
},
|
|
4911
|
-
async randomSleep(
|
|
4912
|
-
|
|
4913
|
-
if (isMobilePage(pageOrBaseMs)) {
|
|
4914
|
-
return await MobileHumanize.randomSleep(maybeBaseMs, maybeJitterPercent);
|
|
4915
|
-
}
|
|
4916
|
-
await jitterSleep(maybeBaseMs, maybeJitterPercent ?? 0.3);
|
|
4917
|
-
return;
|
|
4918
|
-
}
|
|
4919
|
-
await jitterSleep(pageOrBaseMs, maybeBaseMs ?? 0.3);
|
|
4778
|
+
async randomSleep(baseMs, jitterPercent = 0.3) {
|
|
4779
|
+
await sleep(baseMs, jitterPercent);
|
|
4920
4780
|
},
|
|
4921
4781
|
async simulateGaze(page, baseDurationMs = 2500) {
|
|
4922
|
-
if (isMobilePage(page)) {
|
|
4923
|
-
return await MobileHumanize.simulateGaze(page, baseDurationMs);
|
|
4924
|
-
}
|
|
4925
4782
|
const durationMs = jitterMs(baseDurationMs, 0.4);
|
|
4926
|
-
const
|
|
4927
|
-
const
|
|
4928
|
-
while (Date.now() -
|
|
4783
|
+
const startedAt = Date.now();
|
|
4784
|
+
const viewport = page.viewportSize() || { width: 1365, height: 900 };
|
|
4785
|
+
while (Date.now() - startedAt < durationMs) {
|
|
4929
4786
|
await page.mouse.move(
|
|
4930
|
-
100 + Math.random() * Math.max(120,
|
|
4931
|
-
100 + Math.random() * Math.max(120,
|
|
4787
|
+
100 + Math.random() * Math.max(120, viewport.width - 200),
|
|
4788
|
+
100 + Math.random() * Math.max(120, viewport.height - 200)
|
|
4932
4789
|
);
|
|
4933
|
-
await
|
|
4790
|
+
await sleep(300, 0.5);
|
|
4934
4791
|
}
|
|
4935
4792
|
},
|
|
4936
|
-
async humanType(page, selector, text
|
|
4937
|
-
if (isMobilePage(page)) {
|
|
4938
|
-
return await MobileHumanize.humanType(page, selector, text, options);
|
|
4939
|
-
}
|
|
4940
|
-
const actionOptions = buildActionOptions(options);
|
|
4793
|
+
async humanType(page, selector, text) {
|
|
4941
4794
|
if (typeof selector === "string") {
|
|
4942
|
-
await page.type(selector, text
|
|
4795
|
+
await page.type(selector, text);
|
|
4943
4796
|
return;
|
|
4944
4797
|
}
|
|
4945
|
-
|
|
4946
|
-
if (!resolvedTarget || typeof resolvedTarget.type !== "function") {
|
|
4947
|
-
throw new Error("\u76EE\u6807\u5143\u7D20\u4E0D\u652F\u6301 type()");
|
|
4948
|
-
}
|
|
4949
|
-
await resolvedTarget.type(text, actionOptions);
|
|
4798
|
+
await selector.type(text);
|
|
4950
4799
|
},
|
|
4951
|
-
async humanPress(page, targetOrKey, maybeKey
|
|
4952
|
-
if (
|
|
4953
|
-
|
|
4954
|
-
}
|
|
4955
|
-
const hasTarget = typeof maybeKey === "string";
|
|
4956
|
-
const key = hasTarget ? maybeKey : targetOrKey;
|
|
4957
|
-
const pressOptions = hasTarget ? options : maybeKey || options;
|
|
4958
|
-
if (!hasTarget) {
|
|
4959
|
-
await jitterSleep(pressOptions.reactionDelay ?? 180, 0.45);
|
|
4960
|
-
await page.keyboard.press(key, {
|
|
4961
|
-
...pressOptions.keyboardOptions || {},
|
|
4962
|
-
delay: jitterMs(pressOptions.holdDelay ?? 45, 0.5)
|
|
4963
|
-
});
|
|
4800
|
+
async humanPress(page, targetOrKey, maybeKey) {
|
|
4801
|
+
if (typeof maybeKey !== "string") {
|
|
4802
|
+
await page.keyboard.press(targetOrKey);
|
|
4964
4803
|
return true;
|
|
4965
4804
|
}
|
|
4966
4805
|
if (typeof targetOrKey === "string") {
|
|
4967
|
-
await page.press(targetOrKey,
|
|
4806
|
+
await page.press(targetOrKey, maybeKey);
|
|
4968
4807
|
return true;
|
|
4969
4808
|
}
|
|
4970
|
-
|
|
4971
|
-
throwOnMissing: pressOptions.throwOnMissing !== false
|
|
4972
|
-
});
|
|
4973
|
-
if (!resolvedTarget) {
|
|
4974
|
-
return false;
|
|
4975
|
-
}
|
|
4976
|
-
if (typeof resolvedTarget.press === "function") {
|
|
4977
|
-
await resolvedTarget.press(key, buildActionOptions(pressOptions));
|
|
4978
|
-
return true;
|
|
4979
|
-
}
|
|
4980
|
-
await this.humanClick(page, targetOrKey, {
|
|
4981
|
-
...pressOptions,
|
|
4982
|
-
reactionDelay: pressOptions.focusDelay ?? 180
|
|
4983
|
-
});
|
|
4984
|
-
await jitterSleep(pressOptions.reactionDelay ?? 180, 0.45);
|
|
4985
|
-
await page.keyboard.press(key, {
|
|
4986
|
-
...pressOptions.keyboardOptions || {},
|
|
4987
|
-
delay: jitterMs(pressOptions.holdDelay ?? 45, 0.5)
|
|
4988
|
-
});
|
|
4809
|
+
await targetOrKey.press(maybeKey);
|
|
4989
4810
|
return true;
|
|
4990
4811
|
},
|
|
4991
4812
|
async humanClear(page, selector) {
|
|
4992
|
-
if (isMobilePage(page)) {
|
|
4993
|
-
return await MobileHumanize.humanClear(page, selector);
|
|
4994
|
-
}
|
|
4995
4813
|
if (typeof selector === "string") {
|
|
4996
|
-
|
|
4997
|
-
await page.clear(selector, { force: true });
|
|
4998
|
-
return;
|
|
4999
|
-
}
|
|
5000
|
-
await page.fill(selector, "", { force: true });
|
|
5001
|
-
return;
|
|
5002
|
-
}
|
|
5003
|
-
const resolvedTarget = await resolveActionTarget(page, selector, { throwOnMissing: true });
|
|
5004
|
-
if (!resolvedTarget) {
|
|
5005
|
-
throw new Error("\u76EE\u6807\u5143\u7D20\u4E0D\u652F\u6301 clear()");
|
|
5006
|
-
}
|
|
5007
|
-
if (typeof resolvedTarget.clear === "function") {
|
|
5008
|
-
await resolvedTarget.clear(buildActionOptions());
|
|
4814
|
+
await page.fill(selector, "");
|
|
5009
4815
|
return;
|
|
5010
4816
|
}
|
|
5011
|
-
|
|
5012
|
-
await resolvedTarget.fill("", buildActionOptions());
|
|
5013
|
-
return;
|
|
5014
|
-
}
|
|
5015
|
-
throw new Error("\u76EE\u6807\u5143\u7D20\u4E0D\u652F\u6301 clear()");
|
|
4817
|
+
await selector.fill("");
|
|
5016
4818
|
},
|
|
5017
4819
|
async warmUpBrowsing(page, baseDuration = 3500) {
|
|
5018
|
-
|
|
5019
|
-
return await MobileHumanize.warmUpBrowsing(page, baseDuration);
|
|
5020
|
-
}
|
|
5021
|
-
const durationMs = jitterMs(baseDuration, 0.4);
|
|
5022
|
-
const startTime = Date.now();
|
|
5023
|
-
const viewportSize = page.viewportSize() || { width: 1365, height: 900 };
|
|
5024
|
-
while (Date.now() - startTime < durationMs) {
|
|
5025
|
-
const action = Math.random();
|
|
5026
|
-
if (action < 0.4) {
|
|
5027
|
-
await page.mouse.move(
|
|
5028
|
-
100 + Math.random() * Math.max(120, viewportSize.width - 200),
|
|
5029
|
-
100 + Math.random() * Math.max(120, viewportSize.height - 200)
|
|
5030
|
-
);
|
|
5031
|
-
await jitterSleep(350, 0.4);
|
|
5032
|
-
continue;
|
|
5033
|
-
}
|
|
5034
|
-
if (action < 0.7) {
|
|
5035
|
-
await page.mouse.wheel(0, (Math.random() - 0.5) * 220);
|
|
5036
|
-
await jitterSleep(500, 0.4);
|
|
5037
|
-
continue;
|
|
5038
|
-
}
|
|
5039
|
-
await jitterSleep(800, 0.5);
|
|
5040
|
-
}
|
|
4820
|
+
await this.simulateGaze(page, Math.min(baseDuration, 900));
|
|
5041
4821
|
},
|
|
5042
4822
|
async naturalScroll(page, direction = "down", distance = 300, baseSteps = 5) {
|
|
5043
|
-
|
|
5044
|
-
|
|
5045
|
-
}
|
|
5046
|
-
const steps = Math.max(3, baseSteps + Math.floor(Math.random() * 3) - 1);
|
|
5047
|
-
const actualDistance = jitterMs(distance, 0.15);
|
|
5048
|
-
const sign = direction === "down" ? 1 : -1;
|
|
5049
|
-
const stepDistance = actualDistance / steps;
|
|
4823
|
+
const steps = Math.max(1, Number(baseSteps) || 1);
|
|
4824
|
+
const delta = (Number(distance) || 0) / steps * (direction === "down" ? 1 : -1);
|
|
5050
4825
|
for (let index = 0; index < steps; index += 1) {
|
|
5051
|
-
|
|
5052
|
-
|
|
5053
|
-
await page.mouse.wheel(0, stepDistance * factor * sign * jitter);
|
|
5054
|
-
await jitterSleep(60 + index * 25, 0.3);
|
|
4826
|
+
await page.mouse.wheel(0, delta);
|
|
4827
|
+
await sleep(60 + index * 20, 0.3);
|
|
5055
4828
|
}
|
|
5056
4829
|
}
|
|
5057
4830
|
};
|
|
4831
|
+
var resolveDelegate2 = (page) => isMobilePage(page) ? MobileHumanize : DesktopCloakHumanize;
|
|
4832
|
+
var callDelegate2 = (method, page, args) => resolveDelegate2(page)[method](page, ...args);
|
|
4833
|
+
var CloakBrowserHumanize = {
|
|
4834
|
+
jitterMs(base, jitterPercent = 0.3) {
|
|
4835
|
+
return jitterMs(base, jitterPercent);
|
|
4836
|
+
},
|
|
4837
|
+
initializeCursor(page) {
|
|
4838
|
+
return callDelegate2("initializeCursor", page, []);
|
|
4839
|
+
},
|
|
4840
|
+
humanMove(page, target) {
|
|
4841
|
+
return callDelegate2("humanMove", page, [target]);
|
|
4842
|
+
},
|
|
4843
|
+
humanScroll(page, target, options = {}) {
|
|
4844
|
+
return callDelegate2("humanScroll", page, [target, options]);
|
|
4845
|
+
},
|
|
4846
|
+
humanClick(page, target, options = {}) {
|
|
4847
|
+
return callDelegate2("humanClick", page, [target, options]);
|
|
4848
|
+
},
|
|
4849
|
+
randomSleep(pageOrBaseMs, maybeBaseMs, maybeJitterPercent) {
|
|
4850
|
+
if (isPageLike2(pageOrBaseMs)) {
|
|
4851
|
+
return resolveDelegate2(pageOrBaseMs).randomSleep(maybeBaseMs, maybeJitterPercent);
|
|
4852
|
+
}
|
|
4853
|
+
return DesktopCloakHumanize.randomSleep(pageOrBaseMs, maybeBaseMs);
|
|
4854
|
+
},
|
|
4855
|
+
simulateGaze(page, baseDurationMs = 2500) {
|
|
4856
|
+
return callDelegate2("simulateGaze", page, [baseDurationMs]);
|
|
4857
|
+
},
|
|
4858
|
+
humanType(page, selector, text, options = {}) {
|
|
4859
|
+
return callDelegate2("humanType", page, [selector, text, options]);
|
|
4860
|
+
},
|
|
4861
|
+
humanPress(page, targetOrKey, maybeKey, options = {}) {
|
|
4862
|
+
if (typeof maybeKey === "string") {
|
|
4863
|
+
return callDelegate2("humanPress", page, [targetOrKey, maybeKey, options]);
|
|
4864
|
+
}
|
|
4865
|
+
return callDelegate2("humanPress", page, [targetOrKey, maybeKey || options]);
|
|
4866
|
+
},
|
|
4867
|
+
humanClear(page, selector) {
|
|
4868
|
+
return callDelegate2("humanClear", page, [selector]);
|
|
4869
|
+
},
|
|
4870
|
+
warmUpBrowsing(page, baseDuration = 3500) {
|
|
4871
|
+
return callDelegate2("warmUpBrowsing", page, [baseDuration]);
|
|
4872
|
+
},
|
|
4873
|
+
naturalScroll(page, direction = "down", distance = 300, baseSteps = 5) {
|
|
4874
|
+
return callDelegate2("naturalScroll", page, [direction, distance, baseSteps]);
|
|
4875
|
+
}
|
|
4876
|
+
};
|
|
5058
4877
|
|
|
5059
4878
|
// src/humanize.js
|
|
5060
4879
|
var humanizeStrategies = {
|
|
@@ -6855,7 +6674,7 @@ var Mutation = {
|
|
|
6855
6674
|
const overallTimeout = options.timeout ?? 180 * 1e3;
|
|
6856
6675
|
const onMutation = options.onMutation;
|
|
6857
6676
|
const pollInterval = 500;
|
|
6858
|
-
const
|
|
6677
|
+
const sleep2 = (ms) => new Promise((resolve) => {
|
|
6859
6678
|
setTimeout(resolve, ms);
|
|
6860
6679
|
});
|
|
6861
6680
|
const truncate = (value, max = 800) => {
|
|
@@ -7047,7 +6866,7 @@ var Mutation = {
|
|
|
7047
6866
|
const deadline = Date.now() + overallTimeout;
|
|
7048
6867
|
let lastState = state2;
|
|
7049
6868
|
while (Date.now() < deadline) {
|
|
7050
|
-
await
|
|
6869
|
+
await sleep2(pollInterval);
|
|
7051
6870
|
lastState = await buildState();
|
|
7052
6871
|
if (!lastState?.hasMatched) {
|
|
7053
6872
|
continue;
|