UI自动化元素操作
定位到元素后,需要对元素进行操作,常见的有鼠标点击、键盘操作等,这取决于我们定位到的对象支撑哪些操作。一般来说,所有与页面交互的操作都将通过WebElement接口。
webdriver中常用的操作元素的方法
clear():清除对象的内容
driver.find_element_by_id(‘kw’).clear()
send_keys():在对象上模拟按键输入
driver.find_element(By.ID,‘kw’).send_keys(“12306”)
click():单击对象,强调对象的独立性
driver.find_element(By.ID,‘su’).click()
submit():提交表单,要求对象必须是表单
driver.find_element(By.ID,‘form’).submit()
size:返回对象的尺寸
driver.find_element_by_css_selector("#J_username").size
text:获取对象的文本
driver.find_element_by_css_selector(“a.sendpwd”).text
get_attribute(“属性名”):获取对象的属性值
driver.find_element_by_css_selector("#J_username").get_attribute(“name”)
is_displayed():用来判断对象是否可见,即css的display属性是否为none
driver.find_element_by_css_selector("#J_username").is_displayed()
is_enabled():判断对象是否被禁用
driver.find_element_by_css_selector("#J_username").is_enabled()
is_selected():判断对象是否被选中
driver.find_element_by_id(“head_checkbox”).is_selected()
tag_name:获取对象标签名称
driver.find_element_by_id(“head_checkbox”).tag_name
location:获取元素坐标
driver.find_element_by_id(“head_checkbox”).location
- 示例代码
# -*- coding: utf-8 -*-
# @Time : 2021/12/22 17:02
# @Author : Limusen
# @File : demo_ui_operation
import time
from selenium import webdriver
driver = webdriver.Chrome()
driver.get("https://www.baidu.com")
# # 1.获取文本元素信息 获取新闻
# title = driver.find_element_by_xpath("//body[1]/div[1]/div[1]/div[3]/a[1]").text
# print(title)
#
# # 2.获取元素属性 获取百度一下的属性
# attribute = driver.find_element_by_css_selector("input#su").get_attribute('value')
# print(attribute)
# # 3.输入
# driver.find_element_by_css_selector("input#kw").send_keys("测试一下输入")
# time.sleep(2)
# # 4.清除输入框内容
# driver.find_element_by_css_selector("input#kw").clear()
# time.sleep(2)
# # 5.判断元素是否可见 如果元素可见则返回true
# display = driver.find_element_by_css_selector('input#kw').is_displayed()
# print(display)
# # 6.判断元素是否被禁用 如果元素没有被禁用则返回true
# enable = driver.find_element_by_css_selector('input#kw').is_enabled()
# print(enable)
# # 7.判断元素是否被选中 如果元素没有被选中则返回true
# selected = driver.find_element_by_css_selector('input#kw').is_selected()
# print(selected)
# # 8.获取对象的标签名称
# tag_name = driver.find_element_by_css_selector('input#kw').tag_name
# print(tag_name)
# # 9.获取元素坐标
# location = driver.find_element_by_css_selector('input#kw').location
# print(location)
driver.quit()
鼠标操作
在实际的web产品测试中,对于鼠标的操作,不单单只有click(),有时候还要用到右击、双击、拖动等操作,这些操作包含在ActionChains类中。
ActionChains类中鼠标操作常用方法:
context_click():右击
double_click():双击
drag_and_drop():拖动
move_to_element():鼠标移动到一个元素上
click_and_hold():按下鼠标左键在一个元素上
举例:鼠标右击操作
from selenium.webdriver.common.action_chains
import ActionChains
mouse.context_click(元素对象).perform()
模拟鼠标点击
ActionChains(driver).click(元素对象).release(元素对象).perform()
- 示例代码
# -*- coding: utf-8 -*-
# @Time : 2021/12/22 17:23
# @Author : Limusen
# @File : demo_ui_mouse_07
import time
from selenium import webdriver
from selenium.webdriver.common.by import By
# 引入鼠标类
from selenium.webdriver.common.action_chains import ActionChains
driver = webdriver.Chrome()
driver.get("https://www.baidu.com")
# 创建鼠标对象
mouse_action = ActionChains(driver)
# 创建元素对象
e1 = driver.find_element(By.XPATH, '//body[1]/div[1]/div[1]/div[3]/a[1]')
# 操作鼠标点击对象
# mouse_action.click(e1).release().perform()
# 双击
# el = driver.find_element(By.ID, "su")
# driver.find_element(By.NAME, 'wd').send_keys("惆怅长岑长")
# time.sleep(2)
# mouse_action.double_click(el).perform()
# 鼠标悬停
el2 = driver.find_element(By.ID,'s-usersetting-top')
mouse_action.move_to_element(el2).perform()
time.sleep(2)
driver.find_element(By.LINK_TEXT,'高级搜索').click()
time.sleep(2)
driver.quit()
键盘操作
在实际的web测试工作中,需要配合键盘按键来操作,webdriver的keys()类提供键盘上所有按键的操作,还可以模拟组合键Ctrl_a,Ctrl+c/v等。
举例:
from selenium.webdriver.common.keys import Keys#元素上按
driver.find_element(By.XPATH,'//input[@id="kw"]').send_keys(Keys.TAB)#利用ActionChains去进行按键操作
ActionChains(driver).send_keys(Keys.TAB).perform()
组合键操作:ctrl+c ,ctrl+v
ActionChains(driver).key_down(Keys.CONTROL).send_keys('a').key_up(Keys.CONTROL).perform()
备注:
1、在使用修饰键的时候需要key_down()和key_up()方法修饰键 包含ctrl alt shift
2、类似alt+F4ctrl+alt+delete不能使用
- 示例代码
# -*- coding: utf-8 -*-
# @Time : 2021/12/22 17:33
# @Author : Limusen
# @File : demo_ui_keyboard
# 键盘操作
# 常用鼠标键盘操作
import time
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.action_chains import ActionChains
driver = webdriver.Chrome()
driver.get("https://www.baidu.com")
# # 1.单键操作
# driver.find_element(By.ID, 'su').click()
# # 切换tab键
# driver.find_element(By.ID, 'su').send_keys(Keys.TAB)
# # 回退键
# driver.find_element(By.NAME, 'wd').send_keys("95715")
# time.sleep(1)
# driver.find_element(By.ID, 'su').click()
#
# for i in range(1, 6):
# driver.find_element(By.NAME, 'wd').send_keys(Keys.BACK_SPACE)
# time.sleep(1)
# 2.组合键
# 方法一:普通操作
# driver.find_element(By.ID, 'kw').click()
# driver.find_element(By.ID,'kw').send_keys(Keys.COMMAND,'v')
# 方法二:组合方法 必须先按下,然后在抬起来 key_down ==》 key_up
ActionChains(driver).key_down(Keys.COMMAND).send_keys('v').key_up(Keys.COMMAND).perform()
time.sleep(2)
driver.quit()
总结
本章节主要讲述了常用api的操作,以及鼠标键盘的操作,下一章节我们将学习等待相关的知识,敬请期待~
代码地址
https://gitee.com/todayisgoodday/PythonSelenium
CSDN地址
https://blog.csdn.net/weixin_42382016/category_11566096.html