selenium的ActionChains模块可以按下鼠标、移动鼠标、操作键盘。当需要按下鼠标进行断续拖动时,可以使用move_by_offset方法。代码如下:
from selenium.webdriver.common.action_chains import ActionChains
import time
driver = webdriver.Firefox()
ActionChains(driver).move_by_offset(x1,0).perform()
time.sleep(0.5)
ActionChains(driver).move_by_offset(x2,0).perform()
由于每调用一次move_by_offset,都会对ActionChains的内部列表参数self._actions 添加(append)一个命令,调用perform时,会依次执行列表中命令,perform执行结束之后,命令列表并不会清空。下次再次调用perform时,会执行之前添加进self._actions中的所有命令。
所以,上述代码执行结果是:鼠标首先移动x1,停顿0.5s,然后鼠标移动x1+x2。最后,鼠标总移动距离是x1+(x1+x2)
还有另外一种方法,直接
from selenium.webdriver.remote.command import Command然后driver.execute(Command.MOVE_TO,{'xoffset':x1,'yoffset':0}),可以避开perform这一特性。