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