web自动化——Selenium 之鼠标操作和按键操作

一、鼠标操作

鼠标是通过使用底层接口执行的,需要调用ActionChains对象来执行对应的方法

1、导入ActionChains类包

from selenium.webdriver.common.action_chains import ActionChains

2、ActionChains提供的鼠标操作方法

  1) clickAndHold 它将移动到该元素,然后在给定元素的中间单击(不释放)

  2) contextClick 此方法首先将鼠标移动到元素的位置, 然后在给定元素执行上下文点击(右键单击).

  3)doubleClick 它将移动到该元素, 并在给定元素的中间双击.

  4)moveToElement 此方法将鼠标移到元素的中间. 执行此操作时, 该元素也会滚动到视图中.

  5)moveByOffset 此方法将鼠标从其当前位置(或0,0)移动给定的偏移量. 如果坐标在视图窗口之外, 则鼠标最终将在浏览器窗口之外.

  6) dragAndDrop 此方法首先在源元素上单击并按住,然后移动到目标元素的位置后释放鼠标.

  7)release 此操作将释放按下的鼠标左键. 如果WebElement转移了, 它将释放给定WebElement上按下的鼠标左键.

click()     #单击
click_and_hold() #在特定元素上单击鼠标左键(不释放)
release() #抬起鼠标
double_click() #鼠标双击
move_to_element() #鼠标悬停到指定元素上
context_click() #鼠标右击
drag_and_drop() #拖动

3、执行鼠标操作方法

perform() -- 必须调用此方法,才能够在Ui页面当中看到鼠标操作效果

4、链式调用

ActionChains(driver).click_and_hold(drag_src_ele).move_to_element(mouse_on_ele).release().perform()
#通过鼠标按下某个元素->移动到某个元素上面去->鼠标释放->让动作生效

click_and_hold()、move_to_element()、perform()都是ActionChains类提供的实例方法。它们在类内部实现时,都return self(除perform())

5、使用步骤

  使用链式调用

  1)找到元素对象

  2)链式

ActionChains(driver).move_to_element(mouse_on_ele).pause(2).drag_and_drop(drag_src_ele,drop_dst_ele).perfor

6、调用

  • 一个一个多次调用

    1)实例化ActionChains类
    2)调用鼠标方法(可根据需求调多个)

# 1、实例化ActionChains类
ac = ActionChains(driver)
sleep(3)
# 2、调用鼠标方法(可根据需求调多个)
# 2.1 找到元素对象
loc = (By.ID, 'mouse_hover')
ele = driver.find_element(*loc)
# 2.2 调用鼠标方法,将元素对象作为参数传递
ac.move_to_element(ele)
# 3、调用perform()
ac.perform()
  • 链式调用

    1)找到元素对象
    2)调用鼠标方法,将元素对象作为参数传递
    3)调用perform()

# 鼠标悬浮、鼠标拖拽连着执行
# 先找到要操作的元素
mouse_on_ele = driver.find_element(By.ID, 'mouse_hover')
drag_src_ele = driver.find_element(By.ID, 'draggable')
drop_dst_ele = driver.find_element(By.ID, 'droppable')
ActionChains(driver).move_to_element(mouse_on_ele).pause(2).drag_and_drop(drag_src_ele,drop_dst_ele).perform()

二、按键操作

  操作步骤
  1)导入keys

from selenium.webdriver.common.keys import Keys

  2)使用keys方法

  •     Enter
driver.find_element_by_id("kw").send_keys("柠檬班",Keys.ENTER)
  •     Control+C
river.find_element_by_id("kw").send_keys(Keys.CONTROL, "c")
posted @ 2024-03-01 23:44  芒果93  阅读(40)  评论(0编辑  收藏  举报