Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Selenium4.0+Python3系列(四) - 常见元素操作(含鼠标键盘事件)

Selenium4.0+Python3系列(四) - 常见元素操作(含鼠标键盘事件)

作者头像
软件测试君
发布于 2022-12-05 09:37:40
发布于 2022-12-05 09:37:40
1.1K00
代码可运行
举报
文章被收录于专栏:测试人生测试人生
运行总次数:0
代码可运行

一、写在前面

上篇文章介绍的是关于浏览器的常见操作,接下来,我们将继续分享关于元素的常见操作

二、元素的状态

在操作元素之前,我们需要了解元素的常见状态。

1、常见元素状态判断,傻傻分不清
  • is_displayed()
  • is_enabled()
  • is_selected()
2、is_displayed()

判断元素是否显示

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
element.is_displayed()

注意:

判断button是否显示,和is_displayed()容易混淆的是is_enabled()

区别在于,直接用element.is_enabled()方法判断button是否显示,返回值为true,因为button是使用CSS方法判断是否有效,这并不是真正的方法,需要判断其class中是否有值为disabled来判断是否真正处于disabled的状态.

3、is_enabled()

判断元素是否有效,即是否为灰化状态

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
element.is_enabled()  
4、is_selected()

一般判断表单元素,如radio或checkbox是否被选中。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
element.is_selected() 

三、常见元素的操作

这部分主要演示的常见点击操作,例如:文本输入、复选框、单选按钮、选择选项、鼠标点击事件等等。

1、元素点击操作

演示案例:

点击(鼠标左键)页面按钮click()

示例代码如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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()

示例代码如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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()

示例代码如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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、模拟回车操作

模拟打开百度搜索输入博客园,回车操作,示例代码如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
driver.get("https://www.baidu.com/")
driver.find_element(By.ID, "kw").send_keys("久曲健 博客园", Keys.ENTER)
2、常见鼠标操作

演示案例:

常见鼠标操作很多,如左键点击、悬浮、移动、双击、右键等等,示例代码如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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)

五、演示案例源码

示例代码:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# -*- 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()

六、最后

到此,常见元素操作演示结束,这里只是列举了一些常用的操作,关于其他操作,感兴趣的同学请左键查看源代码 !

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-10-25,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 软件测试君 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
selenium源码通读·8 |webdriver/common/keys.py-Keys类分析
1 源码路径selenium/webdriver/common/keys.py图片2 功能描述模拟键盘的输入;源码如下:class Keys(object): """ Set of special keys codes. """ NULL = '\ue000' CANCEL = '\ue001' # ^break HELP = '\ue002' BACKSPACE = '\ue003' BACK_SPACE = BACKSPACE TAB = '\ue
虫无涯
2023/02/09
2560
selenium源码通读·7 |webdriver/common/by.py-By类分析
1 源码路径selenium/webdriver/common/by.py图片2 功能描述翻译:一组受支持的定位器策略,即支持的定位方式定位方式包含八种:class By(object): """ Set of supported locator strategies. """ ID = "id" XPATH = "xpath" LINK_TEXT = "link text" PARTIAL_LINK_TEXT = "partial link text" NA
虫无涯
2023/02/09
3190
Selenium4+Python3系列(八) - Cookie、截图、单选框及复选框处理、富文本框、日历控件操作
我所在的城市昨天出了近20+的阳性案例,但这丝毫没有 影响 到996的工作时间,当然,也没有影响到我想继续更新文章的决心。
软件测试君
2022/12/05
2.7K0
Selenium4+Python3系列(八) - Cookie、截图、单选框及复选框处理、富文本框、日历控件操作
大模型开发实战:(一)使用 Selenium 进行网页爬虫
Selenium 由 Jason Huggins 于 2004 年发起,最初名为 JavaScript Testing Framework,后因受到希腊神话中“月亮女神 Selene”的启发而更名为 Selenium。它最初是为了解决网页自动化测试需求而诞生的开源工具,但因其能模拟真实浏览器操作(如点击、输入、滚动等),也被广泛用于网页数据爬取。爬虫工具有很多,例如 BeautifulSoup4,为什么选择自动化测试工具 Selenium 进行爬虫?目前绝大部分 Web 应用都使用 JavaScrip 动态加载数据,而 BeautifulSoup4 只能解析初始页面的 HTML 源码,对于动态加载的数据无法获取,因此使用 Selenium 模拟用户,完成数据加载的操作。
张高兴
2025/05/21
1.5K0
大模型开发实战:(一)使用 Selenium 进行网页爬虫
Python爬虫利器Selenium从入门到进阶
selenium是最广泛使用的开源Web UI自动化测试套件之一,它所支持的语言包括C++、Java、Perl、PHP、Python和Ruby,在数据抓取方面也是一把利器,能够解决大部分网页的反爬措施,当然它也并非是万能的,一个比较明显的一点就在于是它速度比较慢,如果每天数据采集的量并不是很高,倒是可以使用这个框架。
用户6888863
2021/12/10
1.9K0
Python爬虫利器Selenium从入门到进阶
Python爬虫(二十一)_Selenium与PhantomJS
本章将介绍使用Selenium和PhantomJS两种工具用来加载动态数据,更多内容请参考:Python学习指南 Selenium Selenium是一个Web的自动化测试工具,最初是为网站自动化测试而开发的,最初是为网站自动化测试而开发的,类型像我们玩游戏用的按键精灵,可以按指定的命令自动化操作,不同是Selenium可以直接运行在浏览器上,它支持所有主流的浏览器(包括PhantomJS这些无界面的浏览器)。 Selenium可以根据我们的指令,让浏览器自动加载页面,获取需要的页面,甚至页面截屏,或
用户1174963
2018/01/17
3K0
Python爬虫(二十一)_Selenium与PhantomJS
使用Selenium自动化操作浏览器
Selenium可以自动化操作浏览器,例如:选择元素,输入,点击等,可以用于软件自动化测试,爬虫等工作,也可以做你想做的任何事情。
YaoQi
2025/07/14
3812
使用Selenium自动化操作浏览器
selenium的键盘事件
在测试中,鼠标事件是很常见的,如双击等,鼠标事件需要导入fromselenium.webdriver.common.action_chains import ActionChains
无涯WuYa
2018/10/25
2.2K0
selenium的键盘事件
selenium源码通读·5 |webdriver/common/action_chains.py-ActionChains类分析
1 源码路径selenum/webdriver/common/action_chains.py图片2 功能描述提供鼠标操作,模拟用户的鼠标行为;如鼠标的各种单击、双击、滑动、拖拽等操作。3 使用方法源码说的很清晰了,只要使用以下的方法即可: ActionChains can be used in a chain pattern:: menu = driver.find_element_by_css_selector(".nav") hidden_submenu = driver
虫无涯
2023/02/08
6020
[Python从零到壹] 九.网络爬虫之Selenium基础技术万字详解(定位元素、常用方法、鼠标操作)
Selenium是一款用于测试Web应用程序的经典工具,它直接运行在浏览器中,仿佛真正的用户在操作浏览器一样,主要用于网站自动化测试、网站模拟登陆、自动操作键盘和鼠标、测试浏览器兼容性、测试网站功能等,同时也可以用来制作简易的网络爬虫。
Eastmount
2021/12/02
5.6K0
[Python从零到壹] 九.网络爬虫之Selenium基础技术万字详解(定位元素、常用方法、鼠标操作)
爬虫杀手锏-PhantomJS(附案列网站模拟登录豆瓣网)
Selenium: 可以根据我们的指令,让浏览器自动加载页面,获取需要的数据,甚至页面截屏,或者判断网站上某些动作是否发生。Selenium 自己不带浏览器,不支持浏览器的功能,它需要与第三方浏览器结合在一起才能使用。但是我们有时候需要让它内嵌在代码中运行,所以我们可以用一个叫 PhantomJS 的工具代替真实的浏览器。
一墨编程学习
2018/12/14
1.5K0
自动化-Selenium 3-常用API(Python版)
ActionChains类提供的鼠标事件常用方法(perform()执行所有ActionChains中存储的行为):
wangmcn
2022/07/22
1.6K0
自动化-Selenium 3-常用API(Python版)
知否知否-----selenium知多少
关于selenium,就不多介绍什么了,主要就是用来进行自动化的工具。怎样进行自动化,这才是它大放异彩的地方。下面就来看看吧!
我被狗咬了
2019/09/23
6540
知否知否-----selenium知多少
【Python爬虫实战】深入解析 Selenium:从元素定位到节点交互的完整自动化指南
Selenium 是进行网页自动化操作的强大工具,在测试、数据抓取、用户行为模拟等领域广泛应用。本指南将带您详细了解如何在 Selenium 中查找和定位页面元素,并深入介绍各种节点交互方法,包括点击、输入文本、选择选项等操作。无论您是初学者还是经验丰富的开发者,本篇文章将帮助您掌握 Selenium 自动化的核心技能,实现更高效的网页自动化操作。
易辰君
2024/11/07
1.8K0
Selenium常见元素定位方法和操作的学习介绍
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
菲宇
2019/10/22
2.5K0
python selenium定位元素
查找元素: find_element_by_id find_element_by_name find_element_by_xpath find_element_by_link_text find_element_by_partial_link_text find_element_by_tag_name find_element_by_class_name find_element_by_css_selector 查找多个元素: find_elements_by_name find_elements_by_xpath find_elements_by_link_text find_elements_by_partial_link_text find_elements_by_tag_name find_elements_by_class_name find_elements_by_css_selector
用户5760343
2022/05/13
2K0
《手把手教你》系列练习篇之7-python+ selenium自动化测试 -压轴篇(详细教程)
  “压轴”原本是戏曲名词,指一场折子戏演出的倒数第二个剧目。在现代社会中有很多应用,比如“压轴戏”,但压轴也是人们知识的一个盲区。“压轴”本意是指倒数第二个节目,而不是人们常说的倒数第一个,倒数第一个节目称“压台”。想看“压台篇”,敬请关注宏哥
北京-宏哥
2019/12/10
1.5K0
《手把手教你》系列练习篇之7-python+ selenium自动化测试 -压轴篇(详细教程)
Python Selenium库的使用「建议收藏」
Selenium是一个用于测试网站的自动化测试工具,支持各种浏览器包括Chrome、Firefox、Safari等主流界面浏览器,同时也支持phantomJS无界面浏览器。
全栈程序员站长
2022/07/29
4.8K0
Python Selenium库的使用「建议收藏」
《手把手教你》系列练习篇之6-python+ selenium自动化测试(详细教程)
  前面文章我们了解了如何获取元素的text属性值,和判断元素是否显示在页面(is_displayed()方法),本文我们来学习下,判断一个控件是否被选中状态、获取页面元素的大小、组合键-全选文字、组合键-退格键删除文本和鼠标右键等练习的内容。
北京-宏哥
2019/12/10
1.4K0
《手把手教你》系列练习篇之6-python+ selenium自动化测试(详细教程)
selenium 模拟键盘事件 复制粘贴、右键、回车等
#coding=utf-8 ''' selenium ''' from selenium import webdriver as wd import time bc=wd.Chrome(executable_path='f:\\chromedriver') #bc=wd.Ie(executable_path='f:\\IEDriverServer') bc.get('https://www.sogou.com') #模拟键盘事件 from selenium.webdriver.common.keys im
用户8449980
2021/07/11
2.4K0
推荐阅读
相关推荐
selenium源码通读·8 |webdriver/common/keys.py-Keys类分析
更多 >
交个朋友
加入腾讯云官网粉丝站
蹲全网底价单品 享第一手活动信息
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验