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

发布于:2025-05-08 ⋅ 阅读:(16) ⋅ 点赞:(0)

自动化测试

技术手段模拟人工,执行重复性任务,准确率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创建一个用于设置浏览器的对象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 浏览器最大化、最小化

接着上面的代码

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博客


网站公告

今日签到

点亮在社区的每一天
去签到