缺少硒ActionChains执行(Missing perform for selenium Act

2019-09-26 08:17发布

这是一个非常常见的,有时很难发现问题的时候“行动链”的定义,但没有实际应用。 例:

# incorrect
ActionChains(driver).move_to_element(some_element).click(some_element)

而不是:

# correct
ActionChains(driver).move_to_element(some_element).click(some_element).perform()
                                                                       ^^^^^^^^^

ActionChains将基本上什么也不做,不执行任何操作perform()

有没有办法赶上这种类型年初与静态代码分析的问题?


我也看了,如果PyCharm会警告这一点,但它报告没有发现可疑代码,发现是没有这是可以理解的perform()调用它仍然是一个非常有效的Python。

还有这个missing-perform ESLint规则 。

Answer 1:

执行()

执行()方法执行所有存储的动作。

按照实施ActionChains , perform()就像就像从ActionChains类的另一种方法move_to_element() click()等。

现在,ActionChains类用于将自动化低水平相互作用的对诸如鼠标移动,鼠标按钮的动作,按键,和上下文菜单的相互作用这对于做复杂的动作等悬停在与阻力和通过方法链接下降是有用的。

该文件明确提到,当你呼吁ActionChains对象上的操作方法来生成用户动作,动作都存储在 ActionChains对象的队列 。 最后,当你调用perform( ),该事件在他们排队的顺序发射。

因此,通过这个逻辑下去,你是相当正确地指出... ActionChains将基本上什么也不做,不执行任何动作perform() ...有没有办法年初静态代码分析赶上这种类型的问题。

即使是集成开发环境,例如Eclipse中 ,PyCharm甚至崇高的文本3一个专有的 跨平台的 源代码编辑器与Python的 应用程序编程接口 (API)将不会发出警告这一点。

作为一个例子的Eclipse不会抱怨缺少perfrom()

但是Eclipse会抱怨自己的缩进

这些情况是类似的IDE的经典案例不是抱怨的时候expected_conditions应该用一个元组被调用,它不是一个功能,但实际上一类,它的初始化预计仅有1参数超越自我暗示:

class element_to_be_clickable(object):
    # .....
    def __init__(self, locator):
        # .....

IDE快照:



文章来源: Missing perform for selenium ActionChains