一、写在前面上篇文章介绍的是关于浏览器的常见操作 , 接下来,我们将继续分享关于元素的常见操作,建议收藏、转发!
二、元素的状态在操作元素之前,我们需要了解元素的常见状态 。
1、常见元素状态判断,傻傻分不清
- is_displayed()
- is_enabled()
- is_selected()
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到F12send_keys(Keys.F1) 把F1改成对应的快捷键复制Ctrl+Csend_keys(Keys.CONTROL,'c')粘贴Ctrl+Vsend_keys(Keys.CONTROL,'v')全选Ctrl+Asend_keys(Keys.CONTROL,'a')剪切Ctrl+Xsend_keys(Keys.CONTROL,'x')制表键Tabsend_keys(Keys.TAB)五、演示案例源码示例代码:
【四 Selenium4.0+Python3系列 - 常见元素操作(含鼠标键盘事件)】# -*- coding: utf-8 -*-"""@Time : 2022/10/25 21:39@Auth : 软件测试君@File :element_actions.py@IDE :PyCharm@Motto:ABC(Always Be Coding)"""import timefrom selenium.webdriver import Keys, ActionChainsfrom selenium.webdriver.common.by import Byfrom selenium import webdriverfrom selenium.webdriver.chrome.service import Servicefrom 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()
推荐阅读
- iQOO8系列配置_iQOO8系列参数详情
- 四十六 SpringCloud微服务实战——搭建企业级开发框架:【移动开发】整合uni-app搭建移动端快速开发框架-环境搭建
- 30 《吐血整理》高级系列教程-吃透Fiddler抓包教程-Fiddler如何抓取Android7.0以上的Https包-番外篇
- 四川话情话 四川天府情话聊天室
- 形容活力四射的成语-修饰活力的成语
- 树的邻接矩阵、双亲孩子表示法…… C++ 不知树系列之初识树
- .NET Core C#系列之XiaoFeng.Data.IQueryableX ORM框架
- flutter系列之:永远不用担心组件溢出的Wrap
- 荣耀x20评测_荣耀x20评测表现
- 抛砖系列之redis监控命令