相关疑难解决方法(0)

通过Selenium进行类似人类的鼠标移动

故事:

解决验证码的方法之一,如谷歌ReCaptcha,是试图模仿人类鼠标动作:动作,悬停和点击.

一些用户报告说,将鼠标移动作为B样条曲线可以为它们工作.

问题:

如何通过Selenium将鼠标移动到B样条轨迹之后的特定元素?


请注意,常规browser.actions().mouseMove(elm).perform();会直接"跳"到元素并且太快.我的理解是,这是一个减慢运动速度的问题,在B样条轨迹的数学模型之后,从一点到另一点平滑地"跳跃".

我们使用的是Protractor/JavaScript,但问题实际上与语言无关. 请注意,我并不是要尝试解决验证码,也不是为了"使用验证码解决新恶意机器人在这里和那里违反使用条款"的空间.我只是好奇并渴望在测试自动化领域获得更多技能.

selenium automation bots selenium-webdriver protractor

39
推荐指数
1
解决办法
8719
查看次数

具有numpy/scipy的快速b样条算法

我需要在python中计算3D bspline曲线.我查看了scipy.interpolate.splprep和其他一些scipy模块,但找不到任何能让我满意的东西.所以我在下面写了自己的模块.代码工作正常,但速度很慢(测试函数运行在0.03秒,考虑到我只需要100个带有6个控制顶点的样本,这似乎很多).

有没有办法通过一些scipy模块调用来简化下面的代码,这可能会加快它的速度?如果没有,我可以对我的代码做些什么来改善其性能?

import numpy as np

# cv = np.array of 3d control vertices
# n = number of samples (default: 100)
# d = curve degree (default: cubic)
# closed = is the curve closed (periodic) or open? (default: open)
def bspline(cv, n=100, d=3, closed=False):

    # Create a range of u values
    count = len(cv)
    knots = None
    u = None
    if not closed:
        u = np.arange(0,n,dtype='float')/(n-1) * (count-d)
        knots = np.array([0]*d + range(count-d+1) + [count-d]*d,dtype='int')
    else:
        u …
Run Code Online (Sandbox Code Playgroud)

python numpy scipy bspline

10
推荐指数
1
解决办法
4090
查看次数