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打开网页、关闭网页、浏览器

代码:

python 复制代码
from selenium import webdriver # 操作浏览器
from selenium.webdriver.chrome.options import Options # 设置谷歌浏览器
from  selenium.webdriver.chrome.service import Service # 管理驱动
import time

#设置+启动浏览器
def set_lauch():
    #01创建一个用于设置浏览器的对象q1
    q1 = 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 a1

a1 = set_lauch()
#打开指定网址
url = 'https://www.baidu.com'
a1.get(url)
time.sleep(3)#单位s
#只关闭当前标签页
a1.close()
#彻底退出浏览器,释放驱动
a1.quit()

结果 :打开三秒自动关闭

02 浏览器最大化、最小化

接着上面的代码

python 复制代码
a1.maximize_window()#最大化
time.sleep(2)
a1.minimize_window()#最小化

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

代码:

python 复制代码
a1.set_window_position(200,0)
a1.set_window_size(600,10)

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

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

浏览器截图

代码:

python 复制代码
a1.get_screenshot_as_file('1.png')

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

刷新当前网页

代码:

python 复制代码
a1.refresh()

Selenium核心功能

元素概念

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

01元素定位

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

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

代码:导入包By

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

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

定位一个元素(ID唯一)

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

python 复制代码
a2 = a1.find_element(By.ID, 'kw')
print(a2)

结果,找到了这个元素

定位多个元素

代码:

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

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

02元素交互

1)元素输入

代码:

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

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

2)元素点击

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

代码:

python 复制代码
a2 = a1.find_element(By.ID, 'kw')
a2.send_keys('周杰伦')
a2 = a1.find_element(By.ID,'su')
a2.click()

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

3)元素清空

操作代码:

python 复制代码
a2.clear()

综合例子实战:

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

代码:

python 复制代码
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博客

相关推荐
杏仁海棠花饼13 分钟前
Vue3(ref与reactive)
前端·学习
ahhhhaaaa-1 小时前
【学习笔记】TCP 与 UDP
笔记·学习·tcp/ip
寻丶幽风1 小时前
论文阅读笔记——Large Language Models Are Zero-Shot Fuzzers
论文阅读·pytorch·笔记·深度学习·网络安全·语言模型
ZHANG8023ZHEN1 小时前
Pluto论文阅读笔记
论文阅读·笔记
东京老树根1 小时前
SAP学习笔记 - 开发22 - 前端Fiori开发 数据绑定(Jason),Data Types(数据类型)
前端·笔记·学习
容器( ु⁎ᴗ_ᴗ⁎)ु.。oO2 小时前
Rust学习(1)
javascript·学习·rust
YKPG2 小时前
C++学习-入门到精通【13】标准库的容器和迭代器
c++·学习·stl
huangyuchi.2 小时前
【Linux】编译器gcc/g++及其库的详细介绍
linux·运维·服务器·笔记·编译器·gcc·g++
百里香酚兰3 小时前
【AI学习笔记】Coze工作流写入飞书多维表格(即:多维表格飞书官方插件使用教程)
笔记·学习·大模型·飞书·pe·coze