AutoIt自动化-如何模拟类似人类的光标移动



我在这里写了一个关于如何使用Selenium Web Driver和Java模拟类似人类的光标移动的问题。

在这个探索中,我发现SeleniumWebDriver可能不是最合适的它不能直接移动光标。或者能够以我需要的方式。

我不需要移动鼠标。只要网站认为光标移动正常即可。

我已经了解了AutoIt自动化,并构建了一些脚本。我构建了一个脚本来自动上传照片时所需的关键笔划我想把需要上传的文件路径写到.txt文件中。这是在我的Java应用程序中完成的。然后当我从Java调用AutoIt.exe文件时。然后它读取.txt文件。获取文件路径URL。然后,它执行粘贴文件路径所需的操作。然后单击";打开";按钮将文件上载到网站。

接下来,我可以保存鼠标所在位置的坐标在.txt文件中。然后当我启动.exe AutoIt文件时。它读取这个.txt文件;"类人";鼠标行为。

我只需要知道如何在AutoIt中模拟真实的鼠标/光标移动一个我可以给它一些坐标的函数。

我看到一篇关于在这个CSS和JS中做。。。这应该会给你一个好主意。

有人能帮忙吗?或者提供任何建议?非常感谢。

感谢您对我的问题发表评论。链接到一个脚本。它的效果令人惊叹!

它产生的非线性鼠标运动比我想象的要好:(

; Smoother Mouse Move
; by the DtTvB
; Ease in function
func __calci1($i, $sm)
return $i ^ $sm;
endFunc
; Ease out function
func __calci2($i, $sm)
return 1 - ((1 - $i) ^ $sm);
endFunc
; Ease in out function
func __calci($i, $sm)
if ($i < 0.5) then
return __calci1($i * 2, $sm) / 2;
else
return (__calci2(($i - 0.5) * 2, $sm) / 2) + 0.5;
endIf
endFunc
; Ease backward function
func __calof($i, $sm)
if ($i < 0.5) then
return __calci($i * 2, $sm);
else
return __calci((1 - $i) * 2, $sm);
endIf
endfunc
; MAIN FUNCTION
func mouseMove2($x2, $y2)
$x1 = mouseGetPos(0);
$y1 = mouseGetPos(1);
$xv = random(-100, 100);
$yv = random(-100, 100);
$sm = random(1.5, 2.5);
$m = random(50, 160);
for $i = 0 to $m
$ci = __calci($i / $m, $sm);
$co = __calof($i / $m, $sm);
$cx = $x1 + (($x2 - $x1) * $ci) + ($xv * $co);
$cy = $y1 + (($y2 - $y1) * $ci) + ($yv * $co);
mouseMove ($cx, $cy, 1);
next
endFunc
; Test Script
mouseMove2 (512, 386);

最新更新