【五】鼠标事件
在实际的 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()
浙公网安备 33010602011771号