自动化测试【Python3.7+Selenium3】

news2025/3/31 10:54:31

1、自动化测试环境搭建之selenium3安装

方法1:cmd环境下,用pip install selenium (速度很慢,不推荐)

方法2:下载selenium安装包手动安装
下载地址:https://pypi.org/project/selenium/
在解压好的目录下进行安装 python setup.py install

Selenium验证安装
使用selenium打开firefox浏览器
需要下载对应的驱动(https://github.com/mozilla/geckodriver/releases)
下载driver后、拷贝到浏览器安装路径、配置环境变量
配置环境变量,需要重启cmd窗口

from selenium import webdriver
driver = webdriver.Firefox() --打开火狐浏览器
driver.get("http://www.baidu.com") --打开百度

2、自动化测试需了解的前端知识

html: 网页基础,用于显示数据
js: 网页脚本,控制页面的数据
css: 用于控制文件样式
xml: 用来传输和存储数据
json: 用来传输和存储数据
http: 网络请求协议
xpath:(XML Path Language)是一种用于在XML文档中导航和查询节点的语言,广泛应用于XML数据处理、Web抓取和自动化测试等领域

3、Selenium之定位网页元素

1、开启浏览器

browser = webdriver.Firefox();

2、打开网页

browser.get("http://baidu.com")
--使用python判断是否正确
browser.title 或者 browser.current_url

3、定位元素的方法

id: find_element_by_id() 采用id属性进行定位

name: find_element_by_name() 定位方式和id定位相似,id、name和class一般在网页都至少会有其中的一种		

class name: find_element_by_class_name() 定位方式和id定位相似,id、name和class一般在网页都至少会有其中的一种

link text: find_element_by_link_text() 超链接内容定位,元素内容
			如  <a href="#">xxx </a>,则find_element_by_link_text("xxx")
			--引入等待时间
			from time import sleep 
			sleep(5)

partial link text:find_element_by_partial_link_text() 超链接内容定位,模糊匹配,和上面类似

4、定位元素后的方法

clear() //清空
send_keys() // 输入
back()  //后退页面
maximize_window() // 最大化窗口
click()   //点击事件,点击按钮,超链接
submit() //提交表单

5、定位元素后的属性

tag_name  //标签名
text  //文本内容 

6、CSS定位

css selector:find_element_by_css_selector()
根据CSS属性定位,一般class是用.标记,id是用#标记,定位方式也会比xpath快
如 find_element_by_css_selector('input[id=\'search\']')   // 规则:  元素[属性=]
技巧:通过firebug的拷贝css路径
路径:审查元素-》右键-》复制-》css选择器

7、xpath定位

xpath :find_element_by_xpath()
xpath是XML路径语言,通过元素的路径来完成对元素的查找,HTML就是XML的一种实现方式,在FriePath插件里copy对应的xpath地址
绝对路径定位:从<html>标签开始依次往下进行查找
相对路径:利用元素属性来进行xpath定位
技巧:通过firebug的拷贝css路径

8、弹窗处理(alert和comfirm)
需要先切换窗口 switch_to_alert()
accept() 表示接受
dismiss() 表示取消

driver.find_element_by_id("confirm").click()
#切换到弹窗
confirm_ele = driver.switch_to_alert()
sleep(2)
#confirm_ele.accept()
confirm_ele.dismiss()

4、模拟用户登录

# -*- coding: utf-8 -*-
from selenium import webdriver
from time import sleep
from selenium.webdriver.common.action_chains import ActionChains

#拿到diver
driver = webdriver.Firefox()

#跳转网页
driver.get("https://yuming.com")

print(driver.title)

#强制睡眠时间3秒
sleep(3)

# 隐性等待,最长等10秒
#driver.implicitly_wait(10)


#登录框
login_ele = driver.find_element_by_css_selector("#login")
#触发点击事件
ActionChains(driver).click(login_ele).perform()

sleep(1)
#查找输入框,输入账号,输入框要提前清理里面的数据
driver.find_element_by_id("phone").clear()
driver.find_element_by_id("phone").send_keys("username123")

#查找密码输入框,输入密码
driver.find_element_by_id("pwd").clear()
driver.find_element_by_id("pwd").send_keys("123456")


#拿到登录按钮
login_btn_ele = driver.find_element_by_css_selector("button.login")

#触发点击事件,登录
login_btn_ele.click()

#判断登陆是否成功,逻辑-》鼠标移到上面,判断弹窗字符

#获取鼠标上移的元素
user_info_ele = driver.find_element_by_css_selector(".user_head_portrait")

sleep(1)
#hover触发
ActionChains(driver).move_to_element(user_info_ele).perform()

sleep(1)
#获取用户名称元素
user_name_ele = driver.find_element_by_css_selector(".img_name > span:nth-child(2)")

print("===测试结果==")

print(user_name_ele.text)

name = user_name_ele.text

if name == u"用户名XXX":	#中文加‘u’,防止乱码
	print("login ok")
else:
	print("login fail")

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

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

相关文章

从零开始完成冒泡排序(0基础)——C语言版

文章目录 前言一、冒泡排序的基本思想二、冒泡排序的执行过程&#xff08;一&#xff09;第一轮排序&#xff08;二&#xff09;第二轮排序&#xff08;三&#xff09;第三轮排序&#xff08;四&#xff09;第四轮排序 三、冒泡排序的代码实现&#xff08;C语言&#xff09;&am…

工业级POE交换机:助力智能化与自动化发展

随着工业互联网、物联网&#xff08;IoT&#xff09;和自动化技术的快速发展&#xff0c;网络设备在工业领域的应用日益广泛。然而&#xff0c;在严苛环境下&#xff0c;传统网络设备往往难以应对复杂的温湿度变化、电磁干扰和供电不稳定等挑战。为同时满足数据传输与供电一体化…

使用ZYNQ芯片和LVGL框架实现用户高刷新UI设计系列教程(第五讲)

在上一讲我们讲解了按键回调函数的自定义函数的用法&#xff0c;这一讲继续讲解回调函数的另一种用法。 首先我们将上一讲做好的按键名称以及自定义回调事件中的按键名称修改&#xff0c;改为默认模式为“open”当点击按键时进入回调函数将按键名称改为“close”&#xff0c;具…

Burp Suite Professional 2024版本安装激活指南

文章目录 burpsuite简介Burp Suite的主要组件&#xff1a;Burp Suite的版本使用场景 下载地址使用教程 burpsuite简介 Burp Suite 是一个广泛使用的网络安全测试工具&#xff0c;特别是在Web应用程序安全领域。它主要用于发现和修复Web应用中的安全漏洞&#xff0c;特别适用于渗…

【c++深入系列】:类与对象详解(上)

&#x1f525; 本文专栏&#xff1a;c &#x1f338;作者主页&#xff1a;努力努力再努力wz &#x1f4aa; 今日博客励志语录&#xff1a; 你仰望的星辰并非遥不可及&#xff0c;而是跋涉者脚印的倒影&#xff1b;你向往的远方未必需要翅膀&#xff0c;只要脚下始终有路&#x…

6、进程理论和简单进程创建

一、了解进程推荐看这个视频&#xff0c;很详细 1、概念 进程(Process)程序的运行过程&#xff0c;是系统进行资源分配和调度的独立单元程序的运行过程&#xff1a;多个不同程序 并发&#xff0c;同一个程序同时执行多个任务。 就需要很多资源来实现这个过程。 每个进程都有一…

Todesk介绍

文章目录 ToDesk 软件介绍1. 软件概述2. ToDesk 的功能特点2.1 简单易用2.2 高质量的图像与流畅的操作2.3 跨平台支持2.4 多屏显示与协作2.5 文件传输功能2.6 实时聊天与语音通话2.7 远程唤醒与自动启动2.8 多种权限设置与安全性2.9 无需公网 IP 3. ToDesk 的应用场景3.1 个人使…

Linux 进程3-fork创建子进程继承父进程缓冲区验证

目录 1. fork创建子进程继承父进程缓冲区验证 1.1 write向标准输出&#xff08;终端屏幕&#xff09;写入数据验证 1.1.1 write函数写入数据不带行缓冲刷新 \n 1.1.2 write函数写入数据带行缓冲刷新 \n 1.2 fork创建前执行printf函数 1.2.1 fork创建前执行printf函数带\n…

应用服务接口第二次请求一直pending问题

目录 一、问题背景二、问题排查过程三、解决方案四、总结 一、问题背景 升级内容发布到灰度环境&#xff0c;验证相关服务&#xff0c;查看接口调用日志&#xff0c;发现第一次请求正常&#xff0c;第二次相同接口请求就一直pending&#xff0c;其他服务也是如此 二、问题排查…

基于FPGA的ESP8266无线数据传输(温湿度DTH11、光照强度BH1750、WIFI模块)连接中国移动onenet云平台,仿真+上板

文章目录 一、创建云平台产品设备二、FPGA仿真WIFI模块通信过程仿真分析2.上板 总结 一、创建云平台产品设备 使用串口助手测试传输过程 相关信息记录 二、FPGA仿真WIFI模块通信过程 仿真分析 //各个状态tx_dataalways (posedge clk or negedge rst_n) beginif(!rst_n) beg…

5款视觉OCR开源模型

一、号称「世界上最好的 OCR 模型」Mistral OCR Mistral OCR 擅长理解复杂的文档元素&#xff0c;包括交错图像、数学表达式、表格和高级布局&#xff08;如 LaTeX 格式&#xff09;。该模型可以更深入地理解丰富的文档&#xff0c;尤其是包含图表、图形、公式和数字的科学论文…

计算机二级(C语言)考试高频考点总汇(三)—— 结构体和共用体、结构体对齐规则、联合体大小计算

目录 九、结构体和共用体 十、结构体对齐规则 十一、联合体大小计算 九、结构体和共用体 141. 结构体是&#xff08;不同类型成员的集合&#xff09;&#xff0c;是⼀种用户自定义的数据类型&#xff0c;可以将不同类型的成员组合在⼀起&#xff0c;用于表示&#xff08;复…

Charles抓HTTPS包

一、电脑端 1、证书下载与安装 安装完之后&#xff0c;重新点开看一看&#xff0c;确认下证书状态&#xff0c;安装的没问题 2、charles设置 抓电脑端要把这个点开 3、抓包 正经人看浏览器的包一般是F12&#xff0c;不过这里就用浏览器代替电脑软件了 如果配制好charles之后…

JavaScript模板字符串:

1.示例代码&#xff08;包含注释&#xff09;: <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>JS-数…

【系统架构设计师】数据库系统 ③ ( 数据库设计过程 | 概念结构设计 | ER 图 简介 | 概念设计阶段 工作拆分 )

文章目录 一、数据库设计过程 概述二、ER 图 简介1、ER 图 概念2、ER 图 示例3、ER 图 关系类型① 一对一 ( 1:1 ) 关系② 一对多 ( 1:n ) 关系③ 多对多 ( n:n ) 关系 三、概念设计阶段 工作拆分 一、数据库设计过程 概述 数据库设计过程 : 需求分析阶段 : 明确 用户需求 ; …

Servlet开发与生命周期详解-2

一、在集成开发环境当中开发Servlet程序 1.集成开发工具很多&#xff0c;其中目前使用比较多的是&#xff1a; IntelliJ IDEA&#xff08;这个居多&#xff0c;IDEA在提示功能方面要强于Eclipse&#xff0c;也就是说IDEA使用起来比Eclipse更加智能&#xff0c;更好用。JetBrai…

将网络安全和第三方风险管理与业务目标相结合

在网络安全风险领域&#xff0c;我们经常遇到与企业语言不通的问题。这可能导致网络安全风险管理计划得不到支持。当发现网络安全风险时&#xff0c;困难在于以符合组织语言和目标的方式来表达它。 第三方风险属于另一个灰色地带。在组织内部&#xff0c;许多利益相关者&#…

NO.58十六届蓝桥杯备战|基础算法-枚举|普通枚举|二进制枚举|铺地毯|回文日期|扫雷|子集|费解的开关|Even Parity(C++)

枚举 顾名思义&#xff0c;就是把所有情况全都罗列出来&#xff0c;然后找出符合题⽬要求的那⼀个。因此&#xff0c;枚举是⼀种纯暴⼒的算法。 ⼀般情况下&#xff0c;枚举策略都是会超时的。此时要先根据题⽬的数据范围来判断暴⼒枚举是否可以通过。 使⽤枚举策略时&#xf…

Python正则表达式(二)

目录 六、re.findall()函数和分组 1、0/1分组情况 2、多分组情况 七、或“|”的用法 1、作用域 2、用法 八、贪婪模式和懒惰模式 1、量词的贪婪模式 2、量词的懒惰模式 九、匹配对象 1、相关函数 六、re.findall()函数和分组 1、0/1分组情况 在正则表达式中&#x…

图解AUTOSAR_SWS_FlashDriver

AUTOSAR Flash驱动(FLS)模块详解 AUTOSAR基础软件存储抽象层组件详细解析 目录 1. 概述 1.1. Flash驱动模块简介1.2. 功能和作用2. 架构设计 2.1. 模块架构2.2. API接口设计2.3. 状态机设计2.4. 异步操作时序2.5. 配置结构2.6. 任务处理流程3. 总结 3.1. 设计优势3.2. 应用场景…