【Web自动化】第9讲 Selenium鼠标键盘操作

1.鼠标操作

鼠标操作实现方式

Selenium提供鼠标操作的方法及步骤

  • 需要导入ActionChains类

from selenium.webdriver.common.action_chains import ActionChains

  • 通过ActionChains实例化鼠标对象

action=ActionChains(driver)  #driver 表示的是浏览器驱动对象

  • 调用鼠标的事件方法
  • 调用鼠标的执行方法

action.perform()

 案例实现

# -*- coding: utf-8 -*-
"""
@Time    : 2023/10/16 15:14
@Author  : 娜年花开
@File    : 2.py.py
@Desc    : 需求:鼠标右击操作,实现右击/双击百度首页“新闻”超链接
"""
# 导包
from selenium import webdriver
import  time
from selenium.webdriver.common.action_chains import ActionChains
# 实例化谷歌浏览器
driver = webdriver.Chrome()
time.sleep(2)
# 打开 百度
driver.get("https://www.baidu.com/")

#actionchains 实例化
action = ActionChains(driver)
# 鼠标点击或双击
element = driver.find_element_by_link_text("新闻")
# 实现在新闻超链接上右击
# action.context_click(element).perform()
# 实现用鼠标双击“新闻”
action.double_click(element).perform()

鼠标悬停

# -*- coding: utf-8 -*-
"""
@Time    : 2023/10/16 15:57
@Author  : 娜年花开
@File    : 3.py
@Desc    : 需求:以百度首页设置为例,使用“move_to_element”的方法,鼠标即可悬停于元素设置:
"""
# 导包
from selenium import  webdriver
import  time
from selenium.webdriver.common.action_chains import ActionChains

driver = webdriver.Chrome()
driver.maximize_window()
#打开百度
driver.get("https://www.baidu.com")

# 通过id定位找到设置
element = driver.find_element_by_id("s-usersetting-top")
# 使用方法move_to_element 模拟将鼠标悬停在超链接“设置”处
action = ActionChains(driver)
action.move_to_element(element).perform()
# 定位超链接“高级设置”,并实现单机操作
driver.find_element_by_class_name('set').click()

鼠标拖动

实现方式

鼠标拖拽方法1  按住不抬起——移动到拖拽的位置——释放——执行

鼠标拖拽方法2 通过元素

action.drag_and_drop(div1,div2).perform()

 鼠标拖拽方法3 通过元素坐标

action.grag_and_drop_by_offset(div1,xoffset=,yoffset=).perform()

 案例 鼠标拖拽方法1 

# -*- coding: utf-8 -*-
"""
@Time    : 2023/10/16 16:37
@Author  : 娜年花开
@File    : 4.py
@Desc    :
"""
# 导包
from selenium import  webdriver
import  time
from selenium.webdriver.common.action_chains import  ActionChains

# 打开网站
driver = webdriver.Chrome();
driver.get("https://www.baidu.com")

element1 = driver.find_element_by_link_text("新闻")
element2 = driver.find_element_by_link_text("hao123")

action =ActionChains(driver)
action.click_and_hold(element1).move_to_element(element2).release().perform()

案例 鼠标拖拽方法2 (推荐使用第二种)

# -*- coding: utf-8 -*-
"""
@Time    : 2023/10/16 16:37
@Author  : 娜年花开
@File    : 4.py
@Desc    :
"""
# 导包
from selenium import  webdriver
import  time
from selenium.webdriver.common.action_chains import  ActionChains

# 打开网站
driver = webdriver.Chrome();
driver.get("https://www.baidu.com")

element1 = driver.find_element_by_link_text("新闻")
element2 = driver.find_element_by_link_text("hao123")

action =ActionChains(driver)
action.drag_and_drop(element1,element2).perform()

案例 鼠标拖拽方法3

# -*- coding: utf-8 -*-
"""
@Time    : 2023/10/16 16:37
@Author  : 娜年花开
@File    : 4.py
@Desc    :
"""
# 导包
from selenium import  webdriver
import  time
from selenium.webdriver.common.action_chains import  ActionChains

# 打开网站
driver = webdriver.Chrome();
driver.get("https://www.baidu.com")

element1 = driver.find_element_by_link_text("新闻")
element2 = driver.find_element_by_link_text("hao123")

action =ActionChains(driver)
print(element1.location)
print(element2.location)
action.drag_and_drop_by_offset(element1,55,0).perform()

2.键盘操作

键盘常见快捷键删除,全选,复制,粘贴

  • 模拟键盘上的快捷键操作
  • 调用键盘操作的快捷键方法

导包

from selenium.webdriver.common.keys import Keys

element.send_keys(快捷键的值)

 需要导入Key类, 单键值:直接传入对应的键值

键盘常见的快捷键

send_keys(Keys.BACKSPACE) 删除键(BACKSPACE)

send_keys(Keys.SPACE) 空格键 (SPACE)

send_keys(Keys.TAB) 制表键(Tab)

send_keys(Keys.ESCAPE)  回退键(ESC)

send_keys(Keys.ENTER) 回车键(ENTER)

send_keys(Keys.CONTROL, ‘a’) 全选
send_keys(Keys.CONTROL, ‘c’) 复制
send_keys(Keys.CONTROL, ‘x’) 剪切
send_keys(Keys.CONTROL, ‘v’)  粘贴

 案例

# -*- coding: utf-8 -*-
"""
@Time    : 2023/10/16 16:57
@Author  : 娜年花开
@File    : 5.py
@Desc    : 打开新浪登录页面 定位手机号码输入框信息18800——删除0——复制值——粘贴到密码输入框
"""
# 导包
from  selenium import  webdriver
import  time
from selenium.webdriver.common.keys import Keys
# 实例化浏览器
driver = webdriver.Chrome()
# 打开百度
driver.get("https://www.sina.com.cn/")
driver.maximize_window()
# 点击登录
driver.find_element_by_link_text("登录").click()
ele_username = driver.find_element_by_name('loginname')
time.sleep(1)
ele_username.send_keys("18800")
time.sleep(2)
# 键盘删除0
ele_username.send_keys(Keys.BACK_SPACE)
# 全选
ele_username.send_keys(Keys.CONTROL,'a')
time.sleep(2)
# 复制
ele_username.send_keys(Keys.CONTROL,'c')
# 粘贴 验证码
ele_password = driver.find_element_by_name('password')
time.sleep(1)
ele_password.send_keys(Keys.CONTROL,'v')

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值