Python+selenium 【第四章】UI自动化元素操作鼠标/键盘事件

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

原文地址:https://www.cnblogs.com/yushengaqingzhijiao/p/15720495.html