软件测试 —— Selenium常用函数

软件测试 —— Selenium常用函数

  • 操作测试对象
    • 点击/提交对象 click()
    • 模拟按键输入 send_keys("")
    • 清除文本内容 clear()
  • 模拟用户键盘行为 Keys包
    • 示例用法
  • 获取文本信息 text
    • get_attribute("属性名称")
  • 获取当前页面标题 title
  • 获取当前页面的 url current_url

操作测试对象

点击/提交对象 click()

# 找到b站搜索键并点击
driver.find_element(By.CSS_SELECTOR,".nav-search-btn > svg:nth-child(1)").click()

模拟按键输入 send_keys(“”)

# 找到搜索框,输入小潮院长
driver.find_element(By.CSS_SELECTOR,".nav-search-input").send_keys("小潮院长")

清除文本内容 clear()

输入文本后又想换⼀个新的关键词,这里就需要用到 clear()

# 找到搜索框,先输入小潮院长,再输入老番茄
driver.find_element(By.CSS_SELECTOR,".nav-search-input").send_keys("小潮院长")
time.sleep(3)
driver.find_element(By.CSS_SELECTOR,".nav-search-input").clear()
time.sleep(3)
driver.find_element(By.CSS_SELECTOR,".nav-search-input").send_keys("老番茄")

但是预期结果不是我们想象的那样:
在这里插入图片描述
我们发现,原来的文字并没有被清除,可能是页面上的 JavaScript 可能会阻止 clear() 的工作。我们换成百度的搜索框试试:

import timefrom selenium import webdriver
from selenium.webdriver import Keys
from selenium.webdriver.firefox.service import Service
from selenium.webdriver.common.by import By
from selenium.webdriver.support.wait import WebDriverWait
from webdriver_manager.firefox import GeckoDriverManager# 创建驱动对象
FirefoxIns = GeckoDriverManager().install()
driver = webdriver.Firefox(service=Service(FirefoxIns))# 发送url
#driver.get("https://www.bilibili.com/")
driver.get("https://www.baidu.com/")# 找到搜索框,先输入小潮院长,再输入老番茄
# 找到搜索框,先输入小潮院长
# driver.find_element(By.CSS_SELECTOR, ".nav-search-input").send_keys("小潮院长")
# time.sleep(3)
#
# search_box = driver.find_element(By.CSS_SELECTOR, ".nav-search-input")
# text_length = len(search_box.get_attribute('value'))  # 获取当前文本长度
# if text_length > 0:
#     # 发送退格键以逐个删除字符
#     for _ in range(text_length):
#         search_box.send_keys(Keys.BACKSPACE)
# time.sleep(3)
#
# # 再输入老番茄
# search_box.send_keys("老番茄")
# time.sleep(3)# driver.find_element(By.CSS_SELECTOR,".nav-search-input").send_keys("小潮院长")
# time.sleep(3)
# driver.find_element(By.CSS_SELECTOR,".nav-search-input").clear()
# time.sleep(3)
# driver.find_element(By.CSS_SELECTOR,".nav-search-input").send_keys("老番茄")
#
#
# # 点击搜索键
# driver.find_element(By.CSS_SELECTOR,".nav-search-btn > svg:nth-child(1)").click()
# #driver.find_element(By.XPATH,"/html//body/div[2]/div[2]/div[1]/div[1]/div/div/form/div[2]/svg").click()
# time.sleep(3)driver.find_element(By.CSS_SELECTOR,"#kw").send_keys("小潮院长")
time.sleep(3)
driver.find_element(By.CSS_SELECTOR,"#kw").clear()
time.sleep(3)
driver.find_element(By.CSS_SELECTOR,"#kw").send_keys("老番茄")# 点击搜索键
driver.find_element(By.CSS_SELECTOR,"#su").click()
#driver.find_element(By.XPATH,"/html//body/div[2]/div[2]/div[1]/div[1]/div/div/form/div[2]/svg").click()
time.sleep(3)
# 关闭浏览器
driver.quit()

在这里插入图片描述
在这里插入图片描述
我们看到百度的搜索框是允许清除的。

模拟用户键盘行为 Keys包

from selenium.webdriver.common.keys import Keys 这一行代码是从 Selenium 的 webdriver.common.keys 模块中导入了 Keys 类。Keys 类提供了对各种键盘按键的常量定义,允许你在使用 Selenium 编写的自动化测试脚本中模拟用户输入键盘按键的行为。

通过 Keys 类,你可以发送特殊键(如回车键、退格键、箭头键、功能键等)到网页元素,例如文本框或表单。这对于需要模拟用户交互的场景非常有用,比如填写表单、导航页面或者触发快捷键组合。

以下是一些常见的 Keys 常量及其用途:

  • Keys.RETURNKeys.ENTER:模拟按下回车键。
  • Keys.BACKSPACE:模拟按下退格键。
  • Keys.DELETE:模拟按下删除键。
  • Keys.TAB:模拟按下 Tab 键,用于在表单字段之间移动焦点。
  • Keys.ESCAPE:模拟按下 Esc 键。
  • Keys.SPACE:模拟按下空格键。
  • Keys.ARROW_DOWN, Keys.ARROW_UP, Keys.ARROW_LEFT, Keys.ARROW_RIGHT:模拟按下方向键。
  • Keys.CONTROL, Keys.ALT, Keys.SHIFT**:模拟按下控制键、Alt 键和 Shift 键。通常与其它按键组合使用。
  • Keys.COMMAND:主要用于 Mac 系统上的命令键。

示例用法

下面是一些如何使用 Keys 的例子:

from selenium import webdriver
from selenium.webdriver.common.keys import Keys# 初始化 WebDriver (假设已经设置了正确的驱动程序路径)
driver = webdriver.Chrome()# 打开一个网页
driver.get("https://www.example.com")# 找到搜索框并输入查询
search_box = driver.find_element(By.CSS_SELECTOR, ".nav-search-input")
search_box.send_keys("Selenium")# 使用 Keys.SPACE 发送空格键
search_box.send_keys(Keys.SPACE)# 使用 Keys.BACKSPACE 删除最后一个字符
search_box.send_keys(Keys.BACKSPACE)# 使用 Keys.CONTROL + 'a' 来全选文本 (适用于 Windows/Linux),或 Keys.COMMAND + 'a' (适用于 macOS)
search_box.send_keys(Keys.CONTROL, 'a')  # 对于 macOS 使用 Keys.COMMAND 而不是 Keys.CONTROL# 使用 Keys.DELETE 清除选定的文本
search_box.send_keys(Keys.DELETE)# 输入新的查询词
search_box.send_keys("Appium")# 使用 Keys.RETURN 模拟按下回车键来提交表单
search_box.send_keys(Keys.RETURN)# 关闭浏览器
driver.quit()

通过这种方式,你可以在自动化测试中更逼真地模拟用户的键盘操作,从而更好地测试你的应用程序。

import timefrom selenium import webdriver
from selenium.webdriver import Keys
from selenium.webdriver.firefox.service import Service
from selenium.webdriver.common.by import By
from selenium.webdriver.support.wait import WebDriverWait
from webdriver_manager.firefox import GeckoDriverManager# 创建驱动对象
FirefoxIns = GeckoDriverManager().install()
driver = webdriver.Firefox(service=Service(FirefoxIns))# 发送url
driver.get("https://www.bilibili.com/")
#driver.get("https://www.baidu.com/")# 找到搜索框,先输入小潮院长,再输入老番茄
# 找到搜索框,先输入小潮院长
driver.find_element(By.CSS_SELECTOR, ".nav-search-input").send_keys("小潮院长")
time.sleep(3)search_box = driver.find_element(By.CSS_SELECTOR, ".nav-search-input")
click_box = driver.find_element(By.CSS_SELECTOR, ".nav-search-btn > svg:nth-child(1)")
text_len = len(search_box.get_attribute("value"))
if text_len > 0:for _ in range(text_len):search_box.send_keys(Keys.BACKSPACE)
time.sleep(3)# 再输入老番茄
search_box.send_keys("老番茄")
time.sleep(3)click_box.click()
time.sleep(3)driver.quit()

我们可以模拟退格来达到清除的效果
在这里插入图片描述

获取文本信息 text

如果判断获取到的元素对应的文本是否符合预期呢?获取元素对应的文本并打印⼀下:

我们可以拿b站的“投稿”来试验,是否可以拿到:

在这里插入图片描述

print(driver.find_element(By.CSS_SELECTOR,".header-upload-entry__text").text)

在这里插入图片描述
但是我们可以换一下,百度搜索的页面,看我们是否可以把“百度一下”这几个字拿出来:
在这里插入图片描述

import timefrom selenium import webdriver
from selenium.webdriver import Keys
from selenium.webdriver.firefox.service import Service
from selenium.webdriver.common.by import By
from selenium.webdriver.support.wait import WebDriverWait
from webdriver_manager.firefox import GeckoDriverManager# 创建驱动对象
FirefoxIns = GeckoDriverManager().install()
driver = webdriver.Firefox(service=Service(FirefoxIns))# 发送url
#driver.get("https://www.bilibili.com/")
driver.get("https://www.baidu.com/")print(driver.find_element(By.CSS_SELECTOR,"#su").text)

在这里插入图片描述我们发现好像并没有我们想要的结果。

我们可以看一下网页的源代码,这里“百度一下”是作为属性存在的。
在这里插入图片描述而我们看看,b站投稿按钮“投稿”两个字是作为内容存在的:
在这里插入图片描述
所以当文字是作为属性存在的,我们用text就显示不出来,这个时候,我们要用另外一种方法:get_attribute(“属性名称”)

get_attribute(“属性名称”)

在这里插入图片描述这样我们就能获取到文字了。

获取当前页面标题 title

import timefrom selenium import webdriver
from selenium.webdriver import Keys
from selenium.webdriver.firefox.service import Service
from selenium.webdriver.common.by import By
from selenium.webdriver.support.wait import WebDriverWait
from webdriver_manager.firefox import GeckoDriverManager# 创建驱动对象
FirefoxIns = GeckoDriverManager().install()
driver = webdriver.Firefox(service=Service(FirefoxIns))# 发送url
driver.get("https://www.bilibili.com/")
#driver.get("https://www.baidu.com/")print(driver.title)

在这里插入图片描述

获取当前页面的 url current_url

import timefrom selenium import webdriver
from selenium.webdriver import Keys
from selenium.webdriver.firefox.service import Service
from selenium.webdriver.common.by import By
from selenium.webdriver.support.wait import WebDriverWait
from webdriver_manager.firefox import GeckoDriverManager# 创建驱动对象
FirefoxIns = GeckoDriverManager().install()
driver = webdriver.Firefox(service=Service(FirefoxIns))# 发送url
driver.get("https://www.bilibili.com/")
#driver.get("https://www.baidu.com/")print(driver.current_url)

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/892672.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Vue 学习之旅:核心技术学习总结与实战案例分享(vue指令下+计算属性+侦听器)

Vue 学习之旅:核心技术学习总结与实战案例分享 文章目录 Vue 学习之旅:核心技术学习总结与实战案例分享一、指令补充(一)指令修饰符(二)v-bind 对样式操作的增强(三)v-model 应用于其…

UE5 打包项目

UE5 打包项目 flyfish 通过 “文件”->“打开项目”,然后在弹出的对话框中选择项目文件(通常是以.uproject为后缀的文件) 选择目标平台: 在 UE5 主界面中,找到 “平台”(Platforms)。根据…

1. Doris分布式环境搭建

一. 环境准备 本次测试集群采用3台机器hadoop1、hadoop2、hadoop3, Frontend和Backend部署在同一台机器上,Frontend部署3台组成高可用,Backend部署3个节点,组成3副本存储。 主机IP操作系统FrontendBackendhadoop1192.168.47.128Centos7Foll…

win10电脑 定时关机

win10电脑 定时关机 https://weibo.com/ttarticle/p/show?id2309405110707766296723 二、使用任务计划程序设置定时关机打开任务计划程序: 按下“Win S”组合键,打开搜索框。 在搜索框中输入“任务计划程序”,然后点击搜索结果中的“任务…

day07_Spark SQL

文章目录 day07_Spark SQL课程笔记一、今日课程内容二、Spark SQL函数定义(掌握)1、窗口函数2、自定义函数背景2.1 回顾函数分类标准:SQL最开始是_内置函数&自定义函数_两种 2.2 自定义函数背景 3、Spark原生自定义UDF函数3.1 自定义函数流程&#x…

Hadoop3.x 万字解析,从入门到剖析源码

💖 欢迎来到我的博客! 非常高兴能在这里与您相遇。在这里,您不仅能获得有趣的技术分享,还能感受到轻松愉快的氛围。无论您是编程新手,还是资深开发者,都能在这里找到属于您的知识宝藏,学习和成长…

Java 实现 Elasticsearch 查询当前索引全部数据

Java 实现 Elasticsearch 查询当前索引全部数据 需求背景通常情况Java 实现查询 Elasticsearch 全部数据写在最后 需求背景 通常情况下,Elasticsearch 为了提高查询效率,对于不指定分页查询条数的查询语句,默认会返回10条数据。那么这就会有…

Elasticsearch ES|QL 地理空间索引加入纽约犯罪地图

可以根据地理空间数据连接两个索引。在本教程中,我将向你展示如何通过混合邻里多边形和 GPS 犯罪事件坐标来创建纽约市的犯罪地图。 安装 如果你还没有安装好自己的 Elasticsearch 及 Kibana 的话,请参考如下的链接来进行安装。 如何在 Linux&#xff0…

C#学习笔记 --- 简单应用

1.operator 运算符重载:使自定义类可以当做操作数一样进行使用。规则自己定。 2.partial 分部类: 同名方法写在不同位置,可以当成一个类使用。 3.索引器:使自定义类可以像数组一样通过索引值 访问到对应的数据。 4.params 数…

【Flink】Flink内存管理

Flink内存整体结构图: JobManager内存管理 JVM 进程总内存(Total Process Memory)Flink总内存(Total Flink Memory):JVM进程总内存减去JVM Metaspace(元空间)和JVM Overhead(运行时开销)上图解释: JVM进程总内存为2G;JVM运行时开销(JVM Overh…

MYSQL8创建新用户报错:You have an error in your SQL syntax;check...

本文所用——MYSQL版本:8.0.25 baidu都是直接创建新用户并赋权,如下: GRANT ALL PRIVILEGES ON *.* TO 用户名% IDENTIFIED BY 密码 WITH GRANT OPTION;但是我用的MYSQL版本它就不行,会报错! 经查阅资料发现——MY…

力扣经典练习题之198.打家劫舍

今天继续给大家分享一道力扣的做题心得今天这道题目是198.打家劫舍,这是一道非常经典的问题,在动态规划中经常考到这类问题,题目如下: 题目链接:198.打家劫舍 1,题目分析 首先此题就是给我们了一个数组,代表可以偷的房屋中的对应的金额,我们是一个小偷,一次可以偷很多…

万物互联的背后:MCU嵌入式硬件的奇幻之旅

文章背景:嵌入式硬件是什么? 你可能听说过嵌入式硬件,却总觉得它像是实验室里神秘的玩意儿。其实,它就在我们身边——从你手上的智能手表到车里的倒车雷达,无一不是嵌入式硬件的“杰作”。想象一块小小的电路板&#x…

LabVIEW数据库管理系统

LabVIEW数据库管理系统(DBMS)是一种集成了数据库技术与数据采集、控制系统的解决方案。通过LabVIEW的强大图形化编程环境,结合数据库的高效数据存储与管理能力,开发人员可以实现高效的数据交互、存储、查询、更新和报告生成。LabV…

如何在 Linux、MacOS 以及 Windows 中打开控制面板

控制面板不仅仅是一系列图标和菜单的集合;它是通往优化个人计算体验的大门。通过它,用户可以轻松调整从外观到性能的各种参数,确保他们的电脑能够完美地适应自己的需求。无论是想要提升系统安全性、管理硬件设备,还是简单地改变桌…

python 轮廓 获取环形区域

目录 效果图: 代码: 效果图: 代码: import cv2 import numpy as np# 读取图像 image cv2.imread(rE:\project\jijia\tools_jijia\img_tools\ground_mask.jpg, cv2.IMREAD_GRAYSCALE) # 二值化图像 # 二值化图像 _, binary cv…

Clickhouse基础(一)

数据存储的目录,在存储数据时是先经过压缩后再存储的,压缩效率很高 操作命令: sudo clickhouse start sudo clickhouse restart sudo clickhouse status进入clickhouse clickhouse-client -mCREATE TABLE db_13.t_assist (modelId UInt64,…

基于spingbott+html+Thymeleaf的24小时智能服务器监控平台设计与实现

博主介绍:硕士研究生,专注于信息化技术领域开发与管理,会使用java、标准c/c等开发语言,以及毕业项目实战✌ 从事基于java BS架构、CS架构、c/c 编程工作近16年,拥有近12年的管理工作经验,拥有较丰富的技术架…

从 SQL 语句到数据库操作

1. SQL 语句分类 数据定义语言 DDL : 用于定义或修改数据库中的结构,如:创建、修改、删除数据库对象。create、drop alter 数据操作语言 DML : 用于添加、删除、更新数据库中的数据。select、insert alter、drop 数据控制语言 D…

Excel中SUM求和为0?难道是Excel有Bug!

大家好,我是小鱼。 在日常工作中有时会遇到这样的情况,对Excel表格数据进行求和时,结果竟然是0,很多小伙伴甚至都怀疑是不是Excel有Bug!其实,在WPS的Excel表格中数据求和,结果为0无法正确求和的…