带你认识Selenium函数

Selenium除了用于Web应用程序的测试外,还可以执行许多自动化操作。以下是一些Selenium可以实现的功能,并附带相应的代码示例来详细说明:

  1. 自动化操作

使用Selenium,我们可以模拟用户的行为,如点击、输入、滚动等。

 

python复制代码

from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.by import By
# 初始化浏览器驱动
driver = webdriver.Chrome()
# 打开网页
driver.get('https://www.example.com')
# 查找元素并点击
search_box = driver.find_element(By.ID, 'search-box')
search_box.send_keys('Selenium')
search_box.send_keys(Keys.RETURN)
# 关闭浏览器
driver.quit()
  1. 跨浏览器测试

Selenium支持多种浏览器,只需更换对应的WebDriver即可。

 

python复制代码

# 对于Firefox浏览器
driver = webdriver.Firefox()
# 对于Chrome浏览器
driver = webdriver.Chrome()
# 对于Edge浏览器
driver = webdriver.Edge()
# ... 以此类推,根据需要选择浏览器
  1. 截图功能

Selenium允许我们捕获当前页面的截图。

 

python复制代码

from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from webdriver_manager.chrome import ChromeDriverManager
# 初始化浏览器驱动
driver = webdriver.Chrome(service=Service(ChromeDriverManager().install()))
# 打开网页
driver.get('https://www.example.com')
# 截图
driver.save_screenshot('screenshot.png')
# 关闭浏览器
driver.quit()
  1. 执行JavaScript脚本

Selenium提供了执行JavaScript代码的方法。

 

python复制代码

from selenium import webdriver
driver = webdriver.Chrome()
driver.get('https://www.example.com')
# 执行JavaScript脚本
driver.execute_script("alert('Hello, Selenium!')")
# 关闭浏览器
driver.quit()
  1. 表单验证测试

Selenium可以模拟表单提交,并检查验证结果。

 

python复制代码

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.common.exceptions import NoSuchElementException
driver = webdriver.Chrome()
driver.get('https://www.example.com/login')
# 输入用户名和密码
username_input = driver.find_element(By.ID, 'username')
username_input.send_keys('my_username')
password_input = driver.find_element(By.ID, 'password')
password_input.send_keys('my_password')
# 提交表单
submit_button = driver.find_element(By.ID, 'submit')
submit_button.click()
try:
# 检查是否出现错误消息
error_message = driver.find_element(By.ID, 'error-message')
print("Error:", error_message.text)
except NoSuchElementException:
print("Form submitted successfully!")
# 关闭浏览器
driver.quit()
  1. 等待AJAX请求完成

Selenium提供了显式等待(Explicit Waits)来处理AJAX请求。

 

python复制代码

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
driver = webdriver.Chrome()
driver.get('https://www.example.com/ajax-page')
# 等待某个元素出现
wait = WebDriverWait(driver, 10)
element = wait.until(EC.visibility_of_element_located((By.ID, 'my-element')))
# 执行后续操作
print(element.text)
# 关闭浏览器
driver.quit()
  1. 与其他测试框架集成

Selenium可以很容易地与unittest、pytest等测试框架集成,实现测试用例的编写和运行。

以pytest为例,你可以编写如下的测试用例:

 

python复制代码

import pytest
from selenium import webdriver
from selenium.webdriver.common.by import By
@pytest.fixture(scope="module")
def driver(request):
wd = webdriver.Chrome()
wd.implicitly_wait(10)
request.addfinalizer(wd.quit)
return wd
def test_example_com(driver):
driver.get("https://www.example.com")
assert "Example Domain"

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

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

相关文章

genetic algorithm

genetic algorithm 遗传算法

C++入门5.内联函数,auto关键字,基于范围的for循环(C++11),指针空值nullptr(C++11)

本篇是C过度C初始的最后一篇,快快对入门须知的知识有个印象后,就可以顺顺利利的学习C的类了。 目录 内联函数: 内联函数的特性: auto关键字(C11): auto简介: 使用细则: auto不能推导的场…

基于java+springboot+vue实现的物业管理系统(文末源码+Lw+ppt)23-23

摘 要 快速发展的社会中,人们的生活水平都在提高,生活节奏也在逐渐加快。为了节省时间和提高工作效率,越来越多的人选择利用互联网进行线上打理各种事务,通过线上物业管理系统也就相继涌现。与此同时,人们开始接受方…

K8S基础概念

一、MASTER Kubernetes里的Master指的是集群控制节点,在每个Kubernetes集群里都需要有一个Master来负责整个集 群的管理和控制,基本上 Kubernetes的所有控制命令都发给它,它负责具体的执行过程,我们后 面执行的所有命 令基本都…

idea2024.1发布,lambda多语句的内联断点,增强spring图标等新特性,你没玩过的全新版本

这里是weihubeats,觉得文章不错可以关注公众号小奏技术 简述 2024-04-04 idea官方宣布发布了 一些重大更新 随后我便下载了你没玩过的全新版本IntelliJ IDEA Ultimeate版本试玩 然后脑子里面想到这个 开玩笑 实际下载完是这样 更新内容 更新的内容比较多 关键亮点主要有如下…

Redis入门到通关之数据结构解析-RedisObject

文章目录 ☃️概述☃️源码 ☃️概述 RedisObject 是 Redis 中表示数据对象的结构体,它是 Redis 数据库中的基本数据类型的抽象。在 Redis 中,所有的数据都被存储为 RedisObject 类型的对象。 RedisObject 结构体定义如下(简化版本&#xf…

MDC搭配ttl

1.MDC 1.简介 MDC 介绍​ MDC(Mapped Diagnostic Context,映射调试上下文)是 log4j 和 logback 提供的一种方便在多线程条件下记录日志的功能。MDC 可以看成是一个与当前线程绑定的Map,可以往其中添加键值对。MDC 中包含的内容可…

JavaEE初阶Day 14:多线程(12)

目录 Day 14 :多线程(12)CAS的ABA问题Callable接口ReentrantLock信号量SemaphoreCountDownLatch集合类的多线程安全问题1. Collections.synchronizedList(new ArrayList)2. CopyOnWriteArrayList3. BlockingQueue4. ConcurrentHashMap Day 14…

CSS实现广告自动轮播

实现原理 该广告轮播功能的实现主要依靠HTML和CSS。HTML负责搭建轮播框架,而CSS则控制样式和动画效果。通过CSS中的关键帧动画(Keyframes),我们可以定义图片在容器内的滚动效果,从而实现轮播功能。 HTML结构 首先&am…

如何搭建线下陪玩系统(本地伴游、多玩圈子)APP小程序H5多端前后端源码交付,支持二开!

一、卡顿的优化方法 1、对陪玩系统源码中流媒体传输的上行进行优化,通过提升推流端的设备性能配置、推流边缘CDN节点就近选择等方式解决音视频数据源流的卡顿。 2、对陪玩系统源码中音视频数据的下载链路进行优化,通过选择更近更优质的CDN边缘节点来减少…

Navicat导入sql文件图文教程

本文使用的MySQL工具为:Navicat.默认已经连接数据库!! 步骤: 1.右键自己的数据库,选择新建数据库. 2.输入数据库名称,字符集选择“utf8”,排序规则选择“ utf8_general_ci”,确定. 3.双击新建好的“数据库”。右键点击“运行SQL文件”。 4.选择本地的s…

linux信号相关概念

signal 信号引入什么是信号?如何产生信号?通过按键产生信号调用系统函数向进程发信号系统调用函数发送信号的流程: 由软件条件产生信号软件发送信号的流程: 硬件异常产生信号硬件异常的流程: Deliver、Pending、Block概念信号在内…

Vue 查看真实请求地址

当你在项目中配置了proxy代理,前端在浏览器开发调试的时候,是看不到真是的请求地址的。 这时候,后端要说话了:你这连的是我的地址吗?网络里这显示的也不对吧~ 前端: 额、不是在这里看的。既然你不相信我,…

wsl ubuntu18.04升级为cmake-3.15.3

wsl ubuntu18.04 默认的cmake为3.10,编译CMakeLists.txt经常需要高版本cmake。 升级过程如下: 下载cmake-3.15.3-Linux-x86_64.tar.gz wget https://cmake.org/files/v3.15/cmake-3.15.3-Linux-x86_64.tar.gz 解压文件 tar zxvf cmake-3.15.3-Linux-x86…

替代普通塑料吸头的PFA移液吸头

目前市场上的规格:0.01ml、0.05ml、0.1ml、0.2ml、0.5ml、1ml、2ml、5ml、10ml等均可定制加工PFA材质枪头,可以适配市场上大部分移液枪,普兰德,大龙,赛默飞,赛多利斯,力辰、吉尔森,瑞…

K8S哲学 - probe 探针

探针分类: liveness probe readiness probe startup probe Liveness Probe:用于检查容器是否还在运行。如果 Liveness Probe 失败,Kubernetes 会杀死容器,然后根据你的重启策略来决定是否重新启动容器。常见的做法是使用与 Readin…

error解决expression before ‘static‘

问题现象 报警如下 跳转到提示第125行,但是这行明显是没有问题的。 问题分析 经过排查可以看到,是120行的末尾\在S32DS编译器里面被认为是“接下一行”的意思,120行注释掉之后,后面的121行、122行、123行均被注释掉,…

2024年3月 青少年软件编程(图形化) 等级考试试卷(一级)

2024.3青少年软件编程(图形化) 等级考试试卷(一级) 一、 单选题(共 25 题, 共 50 分) 1.单击下列哪个按钮, 能够让舞台变为“全屏模式” ? ( ) A. B. C. D. 标准答案&am…

Redis系列3:高可用之主从架构

1 主从复制介绍 上一篇《Redis系列2:数据持久化提高可用性》中,我们介绍了Redis中的数据持久化技术,包括 RDB快照 和 AOF日志 。有了这两个利器,我们再也不用担心机器宕机,数据丢失了。 但是持久化技术只是解决了Redi…

Redis进阶——相互关注Feed流推送

目录 关注和取消关注业务需求实现步骤效果如下 共同关注业务需求实现步骤效果如下 Feed流实现方案Feed流简介三种Timeline方式三种模式对比 推送到粉丝收件箱业务需求Feed流的滚动分页 实现分页查询收件箱业务需求具体步骤如下 关注和取消关注 业务需求 当我们进入到笔记详情…