Selenium4.0+Python3系列(四) - 常见元素操作(含鼠标键盘事件)
一、写在前面
上篇文章介绍的是关于浏览器的常见操作,接下来,我们将继续分享关于元素的常见操作,建议收藏、转发!
二、元素的状态
在操作元素之前,我们需要了解元素的常见状态。
1、常见元素状态判断,傻傻分不清
is_displayed()is_enabled()is_selected()
2、is_displayed()
判断元素是否显示
element.is_displayed()
注意:
判断button是否显示,和is_displayed()容易混淆的是is_enabled()。
区别在于,直接用element.is_enabled()方法判断button是否显示,返回值为true,因为button是使用CSS方法判断是否有效,这并不是真正的方法,需要判断其class中是否有值为disabled来判断是否真正处于disabled的状态.
3、is_enabled()
判断元素是否有效,即是否为灰化状态
element.is_enabled()
4、is_selected()
一般判断表单元素,如radio或checkbox是否被选中。
element.is_selected()
三、常见元素的操作
这部分主要演示的常见点击操作,例如:文本输入、复选框、单选按钮、选择选项、鼠标点击事件等等。
1、元素点击操作
演示案例:

点击(鼠标左键)页面按钮:click()
示例代码如下:
driver.get("http://localhost:8080/click.html")
button1 = driver.find_element(By.ID, "button1")
is_displayed = button1.is_enabled()
if is_displayed:
button1.click()
2、Submit操作
演示案例:

点击(鼠标左键)页面按钮:submit()
示例代码如下:
driver.get("http://localhost:8080/submit.html")
login = driver.find_element(By.ID, "login")
is_displayed = login.is_enabled()
if is_displayed:
login.submit()
# login.click()
小贴士:
支持submit的肯定支持click,但是支持click的,不一定支持submit,可能会报错如下:
3、输入、清空输入操作
演示案例:

输入、清空输入操作:clear(), send_keys()
示例代码如下:
username = driver.find_element(By.CSS_SELECTOR, "input[type='text']")
username.clear()
username.send_keys(u"公众号:软件测试君")
# 输出:公众号:软件测试君
print('输入值:{0}'.format(username.get_attribute("value")))
time.sleep(1)
四、鼠标键盘事件操作
1、模拟回车操作
模拟打开百度搜索输入博客园,回车操作,示例代码如下:
driver.get("https://www.baidu.com/")
driver.find_element(By.ID, "kw").send_keys("久曲健 博客园", Keys.ENTER)
2、常见鼠标操作
演示案例:

常见鼠标操作很多,如左键点击、悬浮、移动、双击、右键等等,示例代码如下:
driver.get("http://localhost:8080/mouse.html")
# 鼠标左键点击
ActionChains(driver).click(driver.find_element(By.ID, "mouse2")).perform()
time.sleep(1)
driver.switch_to.alert.accept()
time.sleep(1)
# 鼠标悬浮并移动操作
ActionChains(driver).move_to_element(driver.find_element(By.ID, "mouse1")).pause(1).move_to_element(
driver.find_element(By.ID, "mouse6")).perform()
time.sleep(1)
driver.switch_to.alert.accept()
# 鼠标双击操作
ActionChains(driver).double_click(driver.find_element(By.ID, "mouse3")).perform()
time.sleep(1)
driver.switch_to.alert.accept()
# 鼠标右键
ActionChains(driver).context_click(driver.find_element(By.ID, "mouse5")).perform()
3、常见的键盘操作
| 键盘操作 | 对应代码 |
|---|---|
| 键盘F1到F12 | send_keys(Keys.F1) 把F1改成对应的快捷键 |
| 复制Ctrl+C | send_keys(Keys.CONTROL,'c') |
| 粘贴Ctrl+V | send_keys(Keys.CONTROL,'v') |
| 全选Ctrl+A | send_keys(Keys.CONTROL,'a') |
| 剪切Ctrl+X | send_keys(Keys.CONTROL,'x') |
| 制表键Tab | send_keys(Keys.TAB) |
五、演示案例源码
示例代码:
# -*- coding: utf-8 -*-
"""
@Time : 2022/10/25 21:39
@Auth : 软件测试君
@File :element_actions.py
@IDE :PyCharm
@Motto:ABC(Always Be Coding)
"""
import time
from selenium.webdriver import Keys, ActionChains
from selenium.webdriver.common.by import By
from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from webdriver_manager.chrome import ChromeDriverManager
'''
初始化操作
'''
driver = webdriver.Chrome(service=Service(ChromeDriverManager().install()))
def init():
# 最大化操作
driver.maximize_window()
driver.set_script_timeout(60)
# 智能等待找到元素后立即继续执行,全局生效
driver.implicitly_wait(60)
driver.set_page_load_timeout(60)
init()
'''
元素点击操作
'''
def clickDemo():
# 点击(鼠标左键)页面按钮:click()
driver.get("http://localhost:8080/click.html")
button1 = driver.find_element(By.ID, "button1")
is_displayed = button1.is_enabled()
if is_displayed:
button1.click()
# 关闭弹窗
driver.switch_to.alert.accept()
### 元素基本操作
clickDemo()
time.sleep(1)
'''
submit操作
'''
def submitDemo():
# 点击(鼠标左键)页面按钮:submit()
driver.get("http://localhost:8080/submit.html")
login = driver.find_element(By.ID, "login")
is_displayed = login.is_enabled()
if is_displayed:
login.submit()
# login.click()
# 小贴士:支持submit的肯定支持click,但是支持click的,不一定支持submit,可能会报错如下:
submitDemo()
'''
输入、清空输入操作
'''
def clearInputDemo():
# 输入、清空输入操作:clear() send_keys()
username = driver.find_element(By.CSS_SELECTOR, "input[type='text']")
username.clear()
username.send_keys(u"公众号:软件测试君")
# 输出:公众号:软件测试君
print('输入值:{0}'.format(username.get_attribute("value")))
time.sleep(1)
clearInputDemo()
'''
模拟打开百度搜索输入博客园,回车操作
'''
def mockEnterDemo():
# 模拟打开百度搜索输入博客园,回车操作 示例代码
driver.get("https://www.baidu.com/")
driver.find_element(By.ID, "kw").send_keys("久曲健 博客园", Keys.ENTER)
### 键盘操作
mockEnterDemo()
def mouseDemo():
driver.get("http://localhost:8080/mouse.html")
# 鼠标左键点击
ActionChains(driver).click(driver.find_element(By.ID, "mouse2")).perform()
time.sleep(1)
driver.switch_to.alert.accept()
time.sleep(1)
# 鼠标悬浮并移动操作
ActionChains(driver).move_to_element(driver.find_element(By.ID, "mouse1")).pause(1).move_to_element(
driver.find_element(By.ID, "mouse6")).perform()
time.sleep(1)
driver.switch_to.alert.accept()
# 鼠标双击操作
ActionChains(driver).double_click(driver.find_element(By.ID, "mouse3")).perform()
time.sleep(1)
driver.switch_to.alert.accept()
# 鼠标右键
ActionChains(driver).context_click(driver.find_element(By.ID, "mouse5")).perform()
### 常见键盘事件操作
mouseDemo()
time.sleep(3)
driver.quit()
六、最后
到此,常见元素操作演示结束,这里只是列举了一些常用的操作,关于其他操作,感兴趣的同学请左键查看源代码 !
我是六哥,如果觉得文章对您有帮助,建议收藏、转发!
请继续关注我,我的公众号:软件测试君,并帮忙转发文章到朋友圈。
你的每一次转发,我都当做了喜欢!
Selenium4.0+Python3系列(四) - 常见元素操作(含鼠标键盘事件)的更多相关文章
- Selenium系列之--04 常见元素操作总结
一.Selenium总共有八种定位方法 By.id() 通过id定位 By.name() 通过name 定位 By.xpath() 通过xpath定位 By.className() 通过clas ...
- python selenium-webdriver 元素操作之鼠标操作(四)
上节内容主要说明了元素的定位,本节内容说要说对元素的操作,元素的操作分为两部分一部分是鼠标的操作,另一种是对键盘对元素的操作,下面我们主要讲解一下鼠标对元素的操作. webdriver 模块中几种比较 ...
- (转)python selenium-webdriver 元素操作之鼠标和键盘事件
参考资料:https://blog.csdn.net/zh175578809/article/details/76767748 参考资料2:https://blog.csdn.net/qq_41817 ...
- Natasha 4.0 探索之路系列(四) 模板 API
Natasha 模板 Natasha 在编译单元的基础上进行了封装整理, 并提供了多种模板帮助开发者构建功能. 使用此篇的 API 前提是您对 C# 非常熟悉, 对系统的一些类型足够了解. 据此 Na ...
- Selenium4+Python3系列(五) - 多窗口处理之句柄切换
写在前面 感觉到很惭愧呀,因为居然在Selenium+Java系列中没有写过多窗口处理及句柄切换的文章,不过也无妨,不管什么语言,其思路是一样的,下面我们来演示,使用python语言来实现窗口句柄的切 ...
- 修改css样式+jq中的效果+属性操作+元素操作
:checked 选框选中的 一.修改css样式: 1.参数只写属性名,则返回属性值 $(this).css( ' color '); //300px 2.参数是属性名,属性值,逗号分隔,是 ...
- WebDriver--简单元素操作
clear():清除文本,可用来键盘输入前清除一些input输入框默认的值 send_key(*value):模拟按键输入 click():单击,不止按钮,也可以是文字/图片链接.复选框.单选框.下拉 ...
- 『心善渊』Selenium3.0基础 — 12、Selenium操作鼠标和键盘事件
目录 (一)对鼠标的操作 1.鼠标事件介绍 2.ActionChains 类鼠标操作的常用方法 3.perform()方法 4.鼠标事件操作步骤 5.示例 (1)右键单击.左键双击 (2)鼠标拖拽动作 ...
- 从零开始学习jQuery (四) 使用jQuery操作元素的属性与样式
本系列文章导航 从零开始学习jQuery (四) 使用jQuery操作元素的属性与样式 一.摘要 本篇文章讲解如何使用jQuery获取和操作元素的属性和CSS样式. 其中DOM属性和元素属性的区分值得 ...
随机推荐
- 【安全通报】DolphinScheduler 漏洞情况说明
Apache DolphinScheduler 社区邮件列表最近通告了 2 个漏洞,考虑到有很多用户并未订阅此邮件列表,我们特地在此进行情况说明: CVE-2020-11974[1] 漏洞 (CVE- ...
- Unity3D学习笔记11——后处理
目录 1. 概述 2. 详论 2.1. 实现 2.2. 解析 1. 概述 一般来说,图形渲染引擎都会把帧缓冲(Framebuffer)技术封装成两个接口,其中之一就是后处理(Post-process) ...
- 高效能团队的Java研发规范(进阶版)
目前大部分团队是使用的阿里巴巴Java开发规范,不过在日常开发中难免遇到覆盖不到的场景,本文在阿里巴巴Java开发规范基础上,补充一些常用的规范,用于提升代码质量及增强代码可读性. 编程规约 1.基础 ...
- 若依 | 点击顶部 tag 标签不自动刷新
需求场景 之前:只要点击若依顶部的标签,页面都会自动刷新. 问题:A 页面有查询结果,切换到 B 页面查看信息,再切回 A 页面,则 A 页面的查询结果不会保留. 需求:点击标签,页面不自动刷新,或者 ...
- Python之验证码识别功能
Python之pytesseract 识别验证码 1.验证码来一个 2.适合什么样的验证码呢? 只能识别简单.静态.无重叠.只有数字字母的验证码 3.实际应用:模拟人工登录.页面内容识别.爬虫抓取信息 ...
- html js 导出excel表格
这个使用js 导出excel,可以集成其他语言,可以html,php,asp ,java 等,自己喜欢用那种语言就用哪种,使用非常方便.js是使用tableExport.js ,jquery-3.2. ...
- zkw线段树——简单易懂好写好调的线段树
0.简介 zkw线段树是一种非递归线段树,与普通线段树不同的是,它是棵标准的满二叉树,所以遍历过程可全程使用位运算,常数一般比线段树小得多. 1.结构/建树 前面说了,zkw线段树是满二叉树,可是原数 ...
- [JOI 2017 Final] 足球 (建图,最短路)
题面 题解 我们可以总结出球的两种状态,要么自己飞,要么在球员脚下被带飞. 自己飞的情况下,他只能单向直线运动,每一步代价为A,被带飞可以乱走,每一步代价为C. 从自己飞到被带飞需要一个距离自己最近的 ...
- 【lwip】04-网络数据包流向
目录 前言 4.1 TCPIP分层与lwip数据共享 4.2 协议栈线程模型 4.3 pbuf 结构体 4.3.1 pbuf的标志位flags 4.4 pbuf的类型 4.4.1 PBUF_RAM类型 ...
- iOS 苹果集成登录及苹果图标的制作要求
前言 如果要上架的应用集成了三方登录,那么在审核时,苹果会强制要求应用也要集成苹果登录.如果应用没有集成一般情况下都会被审核团队给打回来. 苹果集成登录 首先,你需要在开发者中心,找到你的应用,勾选上 ...