web 自动化之 selenium+webdriver 环境搭建及原理讲解

文章目录

        • [一、web 自动化测试学习说明](#一、web 自动化测试学习说明)
        • [二、什么 web 自动化测试](#二、什么 web 自动化测试)
        • [三、selenium 简介](#三、selenium 简介)
        • 四、web自动化测试环境搭建
        • [五、web 自动化测试第一个脚本](#五、web 自动化测试第一个脚本)
        • [六、selenium 原理及源码讲解](#六、selenium 原理及源码讲解)
一、web 自动化测试学习说明

进阶 web 自动化测试学习:掌握 python 编程基础

二、什么 web 自动化测试

web 端测试: 对网页的测试

UI 测试: web 测试 + app 测试

web 自动化测试:通过代码对网页进行测试

UI 测试 = web 自动化测试 + APP 自动化测试

三、selenium 简介

selenium 是企业主流应用广泛 web 自动化测试框架

selenium 的三大组件:

1、selenium IDE 浏览器插件:实现脚本录制

2、WebDriver 实现对浏览器的各种操作(API 包)

3、Grid 分布式执行,用例同时在多个浏览器同时执行,提搞测试效率

四、web自动化测试环境搭建

环境搭建步骤:

1、安装 selenium (第三方库)

cmd 命令:pip install selenium

2、安装浏览器(谷歌浏览器)

常见浏览器:chrome 浏览器、IE 浏览器、Firefox 浏览器

3、安装浏览器驱动

chrome 浏览器驱动:chromedriver.exe

IE 浏览器驱动:ieserverdriver.exe

Firefox 浏览器驱动:geckodirver.exe
特别注意事项:下载驱动版本必须与浏览器的版本一致
chrome 浏览器驱动下载地址

chromedriver.exe 文件放置到 python 安装路径(python.exe 所在的路径)

五、web 自动化测试第一个脚本

打开浏览器,加载项目地址

复制代码
from selenium import webdriver

# 指令1:打开浏览器
driver=webdriver.Chrome()
# 指令2:加载项目地址
driver.get("https://www.baidu.com")
# 不断发送其他指令:不同指令操控浏览器做不同的事情
六、selenium 原理及源码讲解

selenium 脚本如何操控浏览器进行对应的操作?

三者如何通信,实现 web 自动化测试:

结合 selenium 源码讲解 selenium 的原理:

  • 1、启动浏览器驱动(chromedriver.exe)服务
  • 2、selenium 脚本与浏览器驱动建立连接,再 selenium 脚本发送指令(基于 http 通信)
    (发送指令给浏览器驱动,浏览器驱动控制浏览器操作)

不同的指令对浏览器进行不同的操作

指令包(API包):JsonWireProtocol( JWP)
JsonWireProtocol ∙ SeleniumHQ/selenium Wiki ∙ GitHub

打开浏览器,执行的命令:

response = self.execute(Command.NEW_SESSION, parameters)

指定请求地址 http://ip:端口号/路径+请求方式+请求参数

response = self.command_executor.execute(driver_command, params)

相关推荐
雾恋22 分钟前
我用 trae 写了一个菜谱小程序(灶搭子)
前端·javascript·uni-app
烛阴1 小时前
TypeScript 中的 `&` 运算符:从入门、踩坑到最佳实践
前端·javascript·typescript
郭天宇 abfore1 小时前
Selenium
selenium·测试工具·web自动化测试
Java 码农2 小时前
nodejs koa留言板案例开发
前端·javascript·npm·node.js
ZhuAiQuan2 小时前
[electron]开发环境驱动识别失败
前端·javascript·electron
nyf_unknown2 小时前
(vue)将dify和ragflow页面嵌入到vue3项目
前端·javascript·vue.js
胡gh2 小时前
浏览器:我要用缓存!服务器:你缓存过期了!怎么把数据挽留住,这是个问题。
前端·面试·node.js
你挚爱的强哥3 小时前
SCSS上传图片占位区域样式
前端·css·scss
奶球不是球3 小时前
css新特性
前端·css
Nicholas683 小时前
flutter滚动视图之Viewport、RenderViewport源码解析(六)
前端