【五】鼠标事件

  在实际的 web 产品测试中发现,有关鼠标的操作,不单单只有单击,有时候还要和到右击,双击,拖动等操作,这些操作包含在ActionChains 类中。

ActionChains 类鼠标操作的常用方法:

  • context_click() 右击
  • double_click() 双击
  • drag_and_drop() 拖动
  • move_to_element() 鼠标悬停在一个元素上
  • click_and_hold() 按下鼠标左键在一个元素上

1、右键

  在使用 ActionChains 类下面的方法之前,要先将包引入

  from selenium.webdriver.common.action_chains import ActionChains  

  ActionChains 用于生成用户的行为;所有的行为都存储在 actionchains 对象。通过 perform()执行存储的行为。

   perfrome()同样也是 ActionChains 类提供的的方法,通常与ActionChains()配合使用。

 

# -*- coding:UTF-8 -*_

import time

from selenium import webdriver
from selenium.webdriver.common.action_chains import ActionChains

# 网盘登录成功后第二次登录不需要重新输入账号密码验证,这里就要加载配置文件启动
profile_path = r"C:\Users\Fly\AppData\Roaming\Mozilla\Firefox\Profiles\uapenjxl.default-release"
profile = webdriver.FirefoxProfile(profile_path)
driver = webdriver.Firefox(profile)
driver.get("https://pan.baidu.com/")
time.sleep(5)
# 定位元素
right = driver.find_element_by_class_name("bdzZz7a")
# 生成用户操作在ActionChains中,并执行
ActionChains(driver).context_click(right).perform()
time.sleep(5)
driver.quit()

 

 

2、鼠标左键

  click_and_hold()
  按住鼠标左键在一个元素。

# -*- coding:UTF-8 -*_

import time

from selenium import webdriver
from selenium.webdriver.common.action_chains import ActionChains

# 网盘登录成功后第二次登录不需要重新输入账号密码验证,这里就要加载配置文件启动
profile_path = r"C:\Users\Fly\AppData\Roaming\Mozilla\Firefox\Profiles\uapenjxl.default-release"
profile = webdriver.FirefoxProfile(profile_path)
driver = webdriver.Firefox(profile)
driver.get("https://pan.baidu.com/")
time.sleep(5)

# 定位需要点击的元素
move = driver.find_element_by_link_text("cn_windows_7_ultimate_with_sp1_x64_dvd_u_677408.iso")

# 生成移动操作,并执行
ActionChains(driver).click_and_hold(move).perform()

time.sleep(5)
driver.quit()

 

 

3、鼠标双击

对于操作系统的操作来说,双击使用相当频繁,但对于 web 应用来说双击的用户比较少

double_click

引入 ActionChains 类
from selenium.webdriver.common.action_chains import ActionChains
...
#定位到要双击的元素
double =driver.find_element_by_xpath("xxx")
#对定位到的元素执行鼠标双击操作
ActionChains(driver).double_click(double).perform()

 

 

4、鼠标拖放操作

  在源元素上按下鼠标左键,然后移动到目标元素上释放

# -*- coding:UTF-8 -*_

import time

from selenium import webdriver
from selenium.webdriver.common.action_chains import ActionChains

# 网盘登录成功后第二次登录不需要重新输入账号密码验证,这里就要加载配置文件启动
profile_path = r"C:\Users\Fly\AppData\Roaming\Mozilla\Firefox\Profiles\uapenjxl.default-release"
profile = webdriver.FirefoxProfile(profile_path)
driver = webdriver.Firefox(profile)
driver.get("https://pan.baidu.com/")
time.sleep(5)

# 定位元素的原位置
old_location = driver.find_element_by_xpath("/html/body/div[1]/div[3]/div[2]/div[3]/div/div/dd[11]/div[2]/div[1]/a")

# 要拖到的目标位置
new_location = driver.find_element_by_xpath("/html/body/div[1]/div[3]/div[2]/div[3]/div/div/dd[10]/div[2]/div[1]/a")

# 执行拖拽动作
ActionChains(driver).drag_and_drop(old_location,new_location).perform()
time.sleep(5)

driver.quit()

 

5、鼠标移动

   模拟鼠标移动到某个元素上

# -*- coding:UTF-8 -*_

import time

from selenium import webdriver
from selenium.webdriver.common.action_chains import ActionChains

# 网盘登录成功后第二次登录不需要重新输入账号密码验证,这里就要加载配置文件启动
profile_path = r"C:\Users\Fly\AppData\Roaming\Mozilla\Firefox\Profiles\uapenjxl.default-release"
profile = webdriver.FirefoxProfile(profile_path)
driver = webdriver.Firefox(profile)
driver.get("https://pan.baidu.com/")
time.sleep(5)

# 定位目标元素
above = driver.find_element_by_link_text("Tools")
# 模拟鼠标移到元素上
ActionChains(driver).move_to_element(above).perform()
time.sleep(5)
driver.quit()

 

 

 

posted on 2020-09-19 20:20  别动我的锅  阅读(63)  评论(0)    收藏  举报

导航

levels of contents