网站首页 > 文章精选 正文
一、写在前面
上篇文章介绍的是关于浏览器的常见操作,接下来,我们将继续分享关于元素的常见操作,建议「收藏、转发!」
二、元素的状态
在操作元素之前,我们需要了解元素的常见状态。
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()
六、最后
到此,常见元素操作演示结束,这里只是列举了一些常用的操作,关于其他操作,感兴趣的同学请左键查看源代码 !
我是六哥,如果觉得文章对您有帮助,建议收藏、转发!
请继续关注我,我的公众号:软件测试君,并帮忙转发文章到朋友圈。
你的每一次转发,我都当做了喜欢!
猜你喜欢
- 2024-12-23 python网络爬虫:批量爬取图片 python批量爬取图片并保存
- 2024-12-23 10w qps缓存数据库——Redis redis缓存数据量多大开始性能下降
- 2024-12-23 Python File(文件) 常用场景 python中file.write
- 2024-12-23 「JS 逆向百例」某网站加速乐 Cookie 混淆逆向详解
- 2024-12-23 「JS 逆向百例」猿人学web比赛第五题:js 混淆 - 乱码增强,详细剖析
- 2024-12-23 Python 操作mysql实现事务处理 python+操作mysql实现事务处理功能
- 2024-12-23 python 大量乱序文件如何合并成有序的
- 2024-12-23 如何使用 PyScript 在 Web 浏览器上轻松运行
- 2024-12-23 Selenium4+Python3系列(六) - 强制等待、隐式等待、显式等待
- 2024-12-23 Python文件、文件夹删除之os、shutil
- 最近发表
- 标签列表
-
- newcoder (56)
- 字符串的长度是指 (45)
- drawcontours()参数说明 (60)
- unsignedshortint (59)
- postman并发请求 (47)
- python列表删除 (50)
- 左程云什么水平 (56)
- 计算机网络的拓扑结构是指() (45)
- 稳压管的稳压区是工作在什么区 (45)
- 编程题 (64)
- postgresql默认端口 (66)
- 数据库的概念模型独立于 (48)
- 产生系统死锁的原因可能是由于 (51)
- 数据库中只存放视图的 (62)
- 在vi中退出不保存的命令是 (53)
- 哪个命令可以将普通用户转换成超级用户 (49)
- noscript标签的作用 (48)
- 联合利华网申 (49)
- swagger和postman (46)
- 结构化程序设计主要强调 (53)
- 172.1 (57)
- apipostwebsocket (47)
- 唯品会后台 (61)
- 简历助手 (56)
- offshow (61)