selenium-鼠标操作

243 阅读2分钟

携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第6天,点击查看活动详情

自动化其实就是模拟人工进行操作的一个过程,我们用到最多的就是鼠标事件和键盘事件,正好selenium中有提供鼠标和键盘操作的方法,我们只需要导包引用即可;selenium提供夫人鼠标操作方法包括单机,双击、右键、悬停、拖拽等,下面就依次对这些事件进行讲解。
鼠标操作:
一、原理:
调用ActionChains的方法->把操作事件按顺序放在一个列队中
调用perform()方法时->才会将列队中的事件依次执行

二、导包:
from selenium.webdriver import ActionChains

三、ActionChains类常用方法:
1.click_and_hold(on_element=None) #按下鼠标左键不松开 2.context_click(on_element=None) #点击鼠标右键 3.double_click(on_element=None) #双击鼠标左键 4.drag_and_drop(source,target) #拖拽loc1至loc2
~1.源元素:source = driver.find_element(By.方法,loc1)
~2.目标元素:target = driver.find_element(By.方法,loc2)
~3.调用:ActionChains.drag_and_drop(source, target).perform() 5.move_by_offset(x,y) #鼠标从当前位置移动到坐标(x,y) 6.move_to_element(on_element=None) #鼠标悬停
7.release(on_element=None) #在元素上释放按住的鼠标按钮 8.move_to_element_with_offset(to_element, xoffset, yoffset) #移动到距某个元素(左上角坐标)多少距离的位置
9.click(on_element=None) #点击鼠标左键

四、ActionChains 类其他方法
1.perform() #执行操作
2.reset_actions() #清除已在队列中的鼠标操作命令
3.key_down(value, element=None) #按下键盘上的某个键
4.key_up(value, element=None) #松开...
5.pause(seconds) #暂停操作(秒)

五、方法组合:
~ 鼠标左键长按某个元素操作: ActionChains(driver).click_and_hold(on_element=None).perform() sleep(time) #time表示长按这个元素的时间 ActionChains(driver).release(on_element=None).perform() ~ 点击(x,y):ActionChains(driver).move_by_offset(x,y).click().perform() ~pause(seconds)的组合使用:鼠标移动到某元素上悬停的时间。(暂停所有动作,相当于等待,用于链式操作过程中的等待) ActionChains(driver).move_to_element(ele).pause(0.5).click(ele).perform()

总的来说,这些鼠标操作方法可以灵活使用,对于某个页面的操作不一定必须要用具体某一种方法,有时候我们可以通过不同的方法来实现的,比如,我们要直接点击网页的某一个元素,但是我们通过元素定位时又很难定位到,这时我们就可以通过点击坐标的鼠标事件来实现这个自动化操作。所以说,对于自动化理解才时最重要的。