当前位置: 首页 > news >正文

Selenium Web自动化测试学习笔记(一)

自动化测试

技术手段模拟人工,执行重复性任务,准确率100%,高于人工

selenium

可通过浏览器驱动控制浏览器,通过元素定位模拟人工,实现web自动化,没有焦点(把浏览器放在最小化依然可以)的情况下依然可以进行,浏览器开20个窗口,每个都可以执行自己的代码

安装环境配置

Selenium

在pycharm控制台输入如下指令安装selenium第三方库

pip install selenium

安装成功

Webdriver浏览器驱动安装

https://googlechromelabs.github.io/chrome-for-testing/

我的chrome版本,大版本是136.0

stable的大版本与我的浏览器一致都是136.0

点击stable,确保chrome版本和chromedriver的大版本(136.0)一致

复制搜索该网址,自动开始下载,将下载后的压缩包解压缩后如下

将最上面的驱动文件复制粘贴到自己的pycharm项目下,后续只要输入相对路径即可

因为浏览器版本号更新的非常频繁,驱动器不能一更新就重新安装,因此需要关闭浏览器的自动更新 ,ctrl+R进入下面的运行台,输入services.msc回车

找到有关谷歌的如下所有谷歌开头的,启动类型全部改为禁用

右键点击属性,找到启动类型点禁用 ,点击应用,再点击确定

 

应用后如下

 再次查看属性显示无法自动更新,说明设置禁用成功

此时浏览器和浏览器驱动都已经具备,自动更新也已经关闭

简单操作入门

01打开网页、关闭网页、浏览器

代码:

from selenium import webdriver # 操作浏览器
from selenium.webdriver.chrome.options import Options # 设置谷歌浏览器
from  selenium.webdriver.chrome.service import Service # 管理驱动
import time#设置+启动浏览器
def set_lauch():#01创建一个用于设置浏览器的对象q1q1 = Options()#禁用沙箱-增加兼容性q1.add_argument('--no-sandbox')#保持浏览器打开(默认代码执行完自动关闭)q1.add_experimental_option('detach', True)#02创建浏览器a1并启动浏览器a1 = webdriver.Chrome(service=Service('chromedriver.exe'), options=q1)#return用于接收return a1a1 = set_lauch()
#打开指定网址
url = 'https://www.baidu.com'
a1.get(url)
time.sleep(3)#单位s
#只关闭当前标签页
a1.close()
#彻底退出浏览器,释放驱动
a1.quit()

结果 :打开三秒自动关闭

02 浏览器最大化、最小化

接着上面的代码

a1.maximize_window()#最大化
time.sleep(2)
a1.minimize_window()#最小化

03浏览器打开位置、尺寸(单位像素)

 代码:

a1.set_window_position(200,0)
a1.set_window_size(600,10)

04浏览器截图&刷新当前网页

可应用于某个画面正在变化的网页,隔几秒就对这个网页进行截图并重新刷新

浏览器截图

代码:

a1.get_screenshot_as_file('1.png')

截图如下图所示,并不是电脑屏幕的截图,只针对这个浏览器页面的大小的截图

刷新当前网页

代码:

a1.refresh()

Selenium核心功能

元素概念

任何一个网页都是由各种各样的元素组成的,如按钮元素、图片链接元素、文字元素

01元素定位

例:用代码自动在百度的搜索框中输入自己想搜索的内容,元素定位的作用就是在百度这个页面自动定位找到搜索框这个元素

右键搜索框->点击检查,可快速定位到这个元素的前端代码

代码:导入包By

from  selenium.webdriver.common.by import By#在元素定位里面需要定位的类型
八大定位

八大定位,如下图先导入By包以后,By.后面提示出现的8种定位类型如ID、NAME等就是Selenium的核心功能

定位一个元素(ID唯一)

 代码:后面跟的是在检查页面检查到的搜索框的ID的value值kw

a2 = a1.find_element(By.ID, 'kw')
print(a2)

结果,找到了这个元素

 定位多个元素

代码:

#07多个元素定位--返回列表
a3 = a1.find_elements(By.ID, 'kw')
print(a3)

定位多个元素返回的是一个列表

02元素交互

1)元素输入

代码:

#08元素输入--发送内容
a2 = a1.find_element(By.ID, 'kw')
a2.send_keys('dafait')

结果 :由代码自动完成输入

2)元素点击

找到百度一下这个按钮的id如下图所示为su

代码:

a2 = a1.find_element(By.ID, 'kw')
a2.send_keys('周杰伦')
a2 = a1.find_element(By.ID,'su')
a2.click()

这里结合上面第一个元素交互操作元素输入为例,输入周杰伦并用代码进行百度一下这个搜索按钮的自动点击,得到结果如下图所示,成功输入周杰伦并点击了搜索按钮返回了百度匹配信息的结果

3)元素清空

操作代码:

a2.clear()

综合例子实战:

实现先在搜索框中输入周杰伦(不点击百度一下这个按钮),操作睡眠两秒(截图)后清空搜索框,再输入周杰伦年轻并点击百度一下按钮,操作睡眠两秒(截图)

代码:

a2 = a1.find_element(By.ID, 'kw')
a2.send_keys('周杰伦')
a1.get_screenshot_as_file('周杰伦输入.png')
time.sleep(2)
a2.clear()
a2.send_keys('周杰伦年轻')
time.sleep(2)
a2 = a1.find_element(By.ID, 'su')
a2.click()
a1.get_screenshot_as_file('周杰伦年轻输入并点击.png')

程序代码自动截图结果如下图所示

后续笔记

Selenium Web自动化测试学习笔记(二)--八大元素定位-CSDN博客

相关文章:

  • C++命名空间、内联与捕获
  • vue3父组件调用子组件方法
  • React Native主题切换、字号调整:不用styled-components也能玩出花
  • daplink开发_一次开发DAPLink的详细开发流程及调试步骤
  • Nginx性能调优与深度监控
  • 在IDEA中编写Spark程序并运行
  • 2025.05.07-华为机考第三题300分
  • C++初阶-string类4
  • DeepSeek智能时空数据分析(九):NL2SQL绘制河流名字-如何给轨迹添加说明文字
  • Qt 中基于 spdlog 的高效日志管理方案
  • 服务器上机用到的设备
  • 【spring】Spring、Spring MVC、Spring Boot、Spring Cloud?
  • 结构可视化:利用数据编辑器剖析数据内在架构​
  • 线程池技术
  • ​​大疆无人机SDR 链路​​
  • AGV智能搬运机器人:富唯智能引领工业物流高效变革
  • 如何判断自己是否适合做项目管理?
  • 成都养老机器人“上岗”,机器人养老未来已至还是前路漫漫?
  • 拒绝服务攻击(DoS/DDoS/DRDoS)详解:洪水猛兽的防御之道
  • 低成本监控IPC模组概述
  • 烈士沈绍藩遗孤、革命家帅孟奇养女舒炜逝世,享年96岁
  • 时隔14个月北京怀柔区重启供地,北京建工以3.59亿元摘得
  • 竞彩湃|霍芬海姆看到保级曙光,AC米兰专注于意大利杯
  • 晋级中部非省会第一城,宜昌凭什么
  • 来论|建设性推进缅北和平进程——中国的智慧与担当
  • 习近平出席俄罗斯总统举行的欢迎仪式