自动化测试之Selenium

https://www.cnblogs.com/ldd215/p/5549984.html

文章目录

  • python常用操作
    • 0.1 获取Excel中的数据
    • 0.2 截取图片
  • 第一章
    • 第一讲 自动化测试概述
      • 1.1什么是软件测试?
      • 1.2什么是自动化测试
      • 1.3自动化测试的流程
      • 1.4适用于自动化测试的条件
      • 1.5使用自动化测试的阶段
      • 1.6自动化测试的过程
      • 1.7软件自动化工具概况
    • 第二讲 Selenium简介
      • 2.1 软件介绍
      • 2.2软件组成
      • 2.3 为什么用selenium工具
    • 第三讲 环境安装
      • 3.1 python3安装
      • 3.2 Selenium安装
      • 3.3自动化测试工具selenium验证安装
        • 1.3.3.1下载火狐浏览器驱动
        • 3.3.2 Python启动Firefox
  • ==第二章 自动化精讲==
    • 第一讲 selenium基础实战之定位网页元素技巧(上集)
      • 2.1.1 ID定位
        • 格式及用法
      • 2.1.2 NAME定位
      • 1.3 CLASS NAME
    • 第二讲 selenium基础实战之定位网页元素技巧(中集)
      • 1.4 tag name 定位
      • 1.5 link text定位
      • 1.6 partial link text
    • 第三讲 下集(万能)
      • 1.7 CSS定位
      • 1.8 xpath定位
    • 第四讲 总结
  • 第三章 模拟事件处理
    • 第一讲 自动化测试实战之ActionChains模拟用户行为

python常用操作

0.1 获取Excel中的数据

# 准备工作,Pycharm安装“xlrd”、“xlwt”插件
代码如下:
import xlwt
import xlrd
# 打开Excel(R表示原类型字符串。)
readbook=xlrd.open_workbook(r'F:\PYtest\login.xls')
# 定位Sheet
sheet=readbook.sheet_by_name("注册")
# sheet行数
nrows= sheet.nrows
# sheet列数
ncols = sheet.ncols
# 选取固定行和列的值
x=sheet.cell(W,N).value
# 添加新的Sheet
writebook=xlwt.Workbook()
sheet=writebook.add_sheet()
# 添加数据到Excel,i行0列
sheet.write(i,0,result[0])
# 保存文件
writebook.save("test.xls")

0.2 截取图片

  • 准备工作,P与harm安装“Pillow”插件
  • 代码如下:
# 引入插件
from PIL import ImageGrab

pictore = ImageGrab.grab()
URLL="c:\\" +str(sheet.cell(W,0).value)+'.jpg'
# 保存图片到URLL路径下
pictore.save(URLL)

环境及文档说明:Selenium3.70+Python3+火狐+ pycharm
浏览器常用功能
操作

第一章

第一讲 自动化测试概述

1.1什么是软件测试?

使用人工和自动的手段来运行或测试某个系统的过程,其目的在于检验他是否满足规定的需求或是检验预期结果和实际结果的差别

  • 测试用例:一个测试文档,描述测试人员的操作及对应的结果。目的是确定应用程序的某个特性是否正常。
  • 测试用例八要素:用例编号、用例描述、重要级、前置条件、运行环境、操作步骤、预期结果、实际结果

1.2什么是自动化测试

把以人为驱动的测试转化为代码执行的一种过程。代码代替人力来执行测试用例的过程。

  • 本质:编程测试,即编写一个程序测试另外一个程序

1.3自动化测试的流程

录制脚本————修改录制脚本————回放脚本————查看报告
自动化测试和手工测试的区别:
手工测试:测试人员手工设计测试用例,执行测试用例并进行结果校验
自动化测试:通过程序编写测试用例,执行用例并进行结果校验

1.4适用于自动化测试的条件

  1. 软件需求变动不频繁
  2. 项目周期足够长
  3. 自动化脚本可以重复使用

1.5使用自动化测试的阶段

回顾:
产品开发的周期:

性能测试、压力测试,模拟多用户或者用户长时间使用系统的场景、
回归测试,重复单一的数据录入或是击键等测试操作造成了步兵要的时间浪费和人力浪费、主流程??

1.6自动化测试的过程

软件研发周期:
测试需求分析(提取)————自动化架构的设置(哪些类,那些功能)————编写自动化脚本————执行自动化脚本进行调试校验(区分脚本的bug和产品的bug)

1.7软件自动化工具概况

厂商 工具名 说明
HP(惠普) winrunner 企业级自动化测试工具,主要针对于Windows平台的应用程序
HP(惠普) QTP B/S系统的自动化功能测试。针对的是GUI应用程序,包括传统的Windows平台的应用程序及web应用程序进行测试、收费
HP(惠普) Unix下自动化测试工具
IBM Rational Robot 一个面向对象的软件测试工具,主要针对WEB、ERP和C/s进行功能自动化测试
IBM Ratiinal functional tester Ratiinal functional tester的IDE是eclipse,支持一下技术构建的应用程序.net、java 1.6
SilkTest 面向web应用、java应用和传统的C/S应用
selenium web功能的自动化测试工具、开源、免费
MaxQ
appuim

// 什么是GUI应用程序

第二讲 Selenium简介

2.1 软件介绍

针对于WEB应用程序的自动化测试工具、开源自动化测试工具。用于Web应用程序用户界面的常用框架。他是一款用于运行端到端功能测试的超强工具。可以使用多种语言书写测试脚本:Java、Python、Ruby、C#。能够在一个或者多个浏览器及系统中执行这些测试。

2.2软件组成

目前Selenium组件主要包括:

  1. Selenium IDE
  2. Selenium 1X(Selenium RC)
  3. Webdriver
  4. Selenium Grid

2.3 为什么用selenium工具

  1. 主流,各大公司都有用,开源免费社区活跃
  2. 支持主流浏览器 火狐FireFox、谷歌chrome、IE(不建议)
  3. 支持多个语言,如python、java,js、php等
  4. 跨平台:mac、windows、linux等 64位系统

第三讲 环境安装

3.1 python3安装

  • 环境:windwos安装python3
  • 安装步骤
  • 1)官方文档安装 下载解压包:
    官方地址:https://www.python.org/downloads/windows/
    注意:1.操作系统位数要一致。2.下载executable installer版本,切勿下载web-based installer版本
    下载教程:https://baijiahao.baidu.com/s?id=1608325862360990066&wfr=spider&for=pc
    说明:
    Python的服务器是在国外,下载访问的速度会很慢,建议保存多个64Python安装包,方便以后使用。
  • 2)python环境变量安装

检验:Win+R——cmd——Python

  • 3)pip工具介绍
    Pip:Python包管理工具,Python安装包自带。Pip下载安装插件,必须联网才能下载
    1.查看已安装的Python插件:DOS——pip list
    2.退出Python的dos:exit()

3.2 Selenium安装

方法1:cmd环境下,用pip install selenium (安装非常非常慢)
方法2:下载selenium安装包手动安装 (推荐)
1)下载地址:https://pypi.org/project/selenium/

2)下载完成后,进行解压。
各个浏览器驱动
拓展:
windows在制定位置打开DOS,Shitf+鼠标右键
DOS窗口进行粘贴:顶栏——右击——编辑——粘贴
3)DOS进入解压后的路径,输入命令:python setup.py install,进行安装
验证1: pip list

验证2:IDLE——import selenium

3.3自动化测试工具selenium验证安装

简介:讲解自动化测试工具selenium安装准确性

1.3.3.1下载火狐浏览器驱动

1、使用selenium打开firefox浏览器,需要下载对应的驱动。
火狐驱动下载地址:https://github.com/mozilla/geckodriver/releases
2. 下载driver(驱动)完成后,进行配置
配制方法一:拷贝文件路径,追加到Path路径后。配置环境变量后,需要重启cmd窗口
配制方法二:拷贝文件到Selenium的路径下

3.3.2 Python启动Firefox

步骤:
1.打开Python的组件IDLE
2.输入指令 from selenium import webdriver(固定句式)
3.driver = webdriver.Firefox() //打开Firefox浏览器
4.driver.get(“https://www.baidu.com”) //访问百度
注意:
使用IDLE执行上面1234步骤的时候,类似于在DOS窗口运行。在执行完123后,这时候不要关闭浏览器,会导致执行4的时候提示10064错误码。实际上运行脚本的时候整个是连贯的。
第四讲 相关知识储备
简介:讲解前端基础知识和推荐安装的工具

sublime ??? / cmder???模拟linux下载指令  /   chrome浏览器???  /  firefox浏览器??

必须要了解的前端基础知识:
	html: 网页基础,用于显示数据
	js: 网页脚本,控制页面的数据
	css: 用于控制文件样式
	xml: 用来传输和存储数据
	json: 用来传输和存储数据
	http: 网络请求协议
	xpath:

第二章 自动化精讲

第一讲 selenium基础实战之定位网页元素技巧(上集)

  • 简介:讲解使用selenium定位网页元素,前置操作
操作 命令
添加浏览器驱动 From selenium import webdriver(不可少的一步)
打开火狐浏览器 browser = webdriver.Firefox();
打开指定网址 browser.get(“目标URL”)

页面元素定位方法定位元素的8种方法,(!!!!一定要唯一)

2.1.1 ID定位

  • ID定位:通过页面元素的ID属性值来对元素进行定位并操作。

格式及用法

操作 指令 例子
定位某个元素 driver.find_element_by_name(“ID值”) driver.find_element_by_name(“kw”)
定位某个元素并输入 driver.find_element_by_name(“ID值”).send_keys(“内容”) driver.find_element_by_name(“wd”).send_keys(“内容”)
定位某个元素并触发点击事件 driver.find_element_by_id(“ID值”).click() driver.find_element_by_id(“su”).click()
清空Text中输入的文本 driver.find_element_by_id(“ID值”).clear() driver.find_element_by_id(“su”).clear()
清除网页中自带文本框的内容 from selenium.webdriver.common.keys import Keys
driver.find_element_by_xpath(“id值”).send_keys(Keys.CONTROL, ‘a’)
driver.find_element_by_xpath(“id值”).send_keys(Keys.DELETE)

2.1.2 NAME定位

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

1.3 CLASS NAME

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

第二讲 selenium基础实战之定位网页元素技巧(中集)

1.4 tag name 定位

  • find_element_by_tag_name() 通过标签名去定位,用的少,如find_element_by_tag_name(“div”)

    标签定位,通过HTML标签定位。页面标签很多不确定唯一,用的少

1.5 link text定位

  • find_element_by_link_text() 超链接内容定位,就是超级链接 名字,元素内容
  • 如: xxx ,则find_element_by_link_text(“xxx”)

1.6 partial link text

  • find_element_by_partial_link_text() 超链接内容定位,模糊匹配,和上面类似
  • 如: xMx ,则find_element_by_partial_link_text() (“M”)

第三讲 下集(万能)

1.7 CSS定位

  • 优点:相比前六种,定位速度快,任何网页都适用。定位速度快
  • 句式:find_element_by_css_selector()
  • 根据CSS属性定位,一般class是用.标记,id是用#标记,定位方式也会比xpath快
  • 如 find_element_by_css_selector(“复制的CSS路径”) // 规则: 元素[属性=值]

技巧:火狐》审查元素-》右键-》复制-》css选择器

1.8 xpath定位

  1. xpath语法
  2. xpath :find_element_by_xpath()xpath是XML路径语言,通过元素的路径来完成对元素的查找,HTML就是XML的一种实现方式,在FriePath插件里copy对应的xpath地址
  • 绝对路径定位:从标签开始依次往下进行查找

  • 相对路径:利用元素属性来进行xpath定位
    find_element_by_xpath(“复制的CSS路径”)
    技巧:火狐》审查元素-》右键-》复制-》Xpath

第四讲 总结

8种选择器注意问题:如果定位元素报错,原因如下

  1. 根据定位取不到
  2. 多个元素根据下标超出范围,没有0,从1开始
    解决办法:换其他方式定位元素

4、定位到元素后的方法
clear() //清空
send_keys() // 输入
back() //后退页面
maximize_window() // 最大化窗口
click() //点击事件,点击按钮,超链接
submit() //提交表单
5、定位到元素后的属性
tag_name //标签名
text //文本内容

第三章 模拟事件处理

第一讲 自动化测试实战之ActionChains模拟用户行为

  • 简介:讲解使用selenium里面的ActionChains模拟用户的行为
  • 需求:
    需要模拟鼠标操作才能进行的情况,比如单击、双击、点击鼠标右键、拖拽

解决:selenium提供了一个类来处理这类事件
selenium.webdriver.common.action_chains.ActionChains(driver)
脚本:
from selenium.webdriver.common.action_chains import ActionChains
执行原理:
调用ActionChains的方法时不会立即执行,会将所有的操作按顺序存放在一个队列里,当调用perform()方法时,队列中的事件会依次执行

支持链式写法或者分步写法

ActionChains(driver).click(ele).perform()

分步写法

鼠标和键盘方法列表:

	perform() 执行链中的所有动作

	click(on_element=None) 单击鼠标左键

	context_click(on_element=None) 点击鼠标右键

	double_click(on_element=None) 双击鼠标左键

	move_to_element(to_element) 鼠标移动到某个元素
	
	ele.send_keys(keys_to_send) 发送某个词到当前焦点的元素


	========== 不常用 ==========

	click_and_hold(on_element=None) 点击鼠标左键,不松开

	release(on_element=None) 在某个元素位置松开鼠标左键

	key_down(value, element=None) 按下某个键盘上的键

	key_up(value, element=None) 松开某个键

	drag_and_drop(source, target) 拖拽到某个元素然后松开

	drag_and_drop_by_offset(source, xoffset, yoffset) 拖拽到某个坐标然后松开

	move_by_offset(xoffset, yoffset) 鼠标从当前位置移动到某个坐标

	move_to_element_with_offset(to_element, xoffset, yoffset) 移动到距某个元素(左上角坐标)多少距离的位置


	send_keys_to_element(element, keys_to_send) 发送某个键到指定元素

第二讲 鼠标事件实战之hover菜单栏弹出
简介:鼠标事件之菜单栏hover弹出

1、
#引入 ActionChains 类
from selenium.webdriver.common.action_chains import ActionChains

2、move_to_element(to_element) 鼠标移动到某个元素

#对定位到的元素执行鼠标移动到上面的操作
ActionChains(driver).move_to_element(ele1).perform()

第三讲 多知识点综合实战之模拟用户登录
简介:讲解使用selenium模拟登录小D课堂,并选择课程
1、多知识点实战
2、查找登录框-》输入用户名和密码-》触发登录-》判断登录是否成功-》打印结果

第四讲 网页等待时间
1、为什么需要等待时间–》等系统稳定
网页需要加载对应的资源文件,页面渲染,窗口处理等等

2、自动化测试常用的等待时间
强制等待 : (自己调试代码看效果)
from time import sleep
sleep(5) # 强制等待5秒再执行下一步,缺点是不管资源是不是完成,都必须等待

隐性等待:driver.implicitly_wait(10) # 隐性等待,最长等10秒
#设置了一个最长等待时间,如果在规定时间内网页加载完成,则执行下一步,否则一直等到时间截止,然后执行下一步,弊端就是程序会一直等待整个页面加载完成,到浏览器标签栏那个加载圈不再转
注意:对driver起作用,所以只要设置一次即可,没有必要到处设置

显性等待:WebDriverWait 需要配合 until和until_not,程序每隔N秒检查一次,如果成功,则执行下一步,否则继续等待,直到超过设置的最长时间
from selenium.webdriver.support.wait import WebDriverWait

语法:WebDriverWait(driver, timeout, poll_frequency=0.5, ignored_exceptions=None)

		from selenium.webdriver.common.by import By
		from selenium.webdriver.support.ui import WebDriverWait
		from selenium.webdriver.support import expected_conditions as EC

结论: 隐性等待和显性等待可以同时用,等待的最长时间取两者之中的较大者

第四章 自动化测试进阶实战
第一讲 网页单选性别
简介:讲解使用selenium修改input输入框和单选框
find_element_by_name().click()
find_element_by_id().click()
如何显示默认选中项的数据

第二讲 页面常见弹窗处理
简介:讲解使用selenium处理页面弹窗,alert和comfirm

弹窗常用方法(需要先切换窗口
switch_to_alert() )

		accept() 表示接受
		dismiss() 表示取消、关闭

第三讲 验证码常见解决方案
简介:自动化测试之常见验证码解决方案

	3.1 破解验证码
		OCR识别: tesseract-ocr
		AI机器学习: 

	3.2绕过
		1、让开发人员临时关闭验证码 安全性需要保密,一般在开发测试环境使用)
		2、提供一个万能的验证码(安全性需要保密,一般在开发测试环境使用)

		3、使用cookie(登录主要是为了拿cookie,获取登录凭证)

cookie操作
简介:讲解自动化测试实战进阶操作cookie和使用场景
拿到想要的cookie
谷歌——F12——控制台()application——复制需要的行

Dviver.add_cookie(“namw”:””,”value”:””)
Dviver.add_cookie(“cookie”:”token”,”value”:”….”)

第四讲 试错误截图
简介:讲解使用webdriver自动截图

driver.get_screenshot_as_file("./error_png.png")



# Pycharm

[安装第三方库](https://baijiahao.baidu.com/s?id=1608962838978631456&wfr=spider&for=pc)
[汉化包](https://pan.baidu.com/s/1eXtF4dMtYNsu9OPBElyoqw) 
==提取码:==d33r
汉化步骤:
1. 下载该jar包
2. 存放在Pycharm的lib目录下,重启即可。


@[toc]
# 常用命令:
操作|指令
--|--
查看设备IP|adb shell netcfg 
查看设备|adb devices
获取设备状态|adb get -state
查看守家安装包包名|adb shell,am monitor 点击要查看的app后出现包名
安装apk|adb install 路径+报名.apk
覆盖安装|adb -r install 路径+报名.apk
卸载手机安装包|adb unstall 包名.apk
复制手机文件到本机|adb pull 手机文件存放路径+包名.扩展名  本机存放路径
复制手机文件到本机并从命名|adb pull 手机文件存放路径+包名.扩展名  本机存放路径+新名.扩展名
monkey执行100随机事件并导出日志|adb shell monkey -p 包名 -v 100>c:test.log
monkey执行100随机事件间隔1秒并导出日志|adb shell monkey -p 包名 --throttle 1000 -v 100>c:test.log
同一设备同时两个apk进行mongkey测试|adb shell monkey -p-p 包名1 包名2 -v 100>c:test.log
同一电脑操作指定设备进行monkey测试|adb -s 设备识别码(devices查看) shell monkey -p-p 包名1 包名2 -v 100>c:test.log
停止monkey测试|adb shell
# 常见问题:
## 1. 安装好后下载提示下载资源(插件)错误?

答:这些插件都是国外的。国内下载需要才能下载。
解决办法:
A.更换host:百度云——“网络”
B.更换代理:
IE浏览器——按键“alt”——工具——internet选项——连接——局域网设置——使用自动配置脚本

## 2. 手机连接线连接至电脑,adb devices不显示设备?

答:排除法
A.电脑——右击“属性”——设备管理器——查看ADB interface接口显示是否有感叹号(驱动未更新)——手机链接在电脑上——检测更新驱动
B.手机打开开发者模式;连接方式MAT。

## 3. 安装包的时候显示安装失败?

A.手机上旧的安装包没有卸载
B.手机未打开“允许应用从USB安装”
C.手机连接方式未选择“MAT”

## 4. 输入ADB命令,提示“adb.exe”已停止运行?

A.安装的adb.exe文件版本太旧。//D:\androidSdkWindows\platform-tools
B.
C.

## 5. 手机设备链接不上?Adb已停止运行?

A.手机有没有设置开发者选项。(开发者选项/USB调试都打开)
B.查看电脑是否安装了最新的驱动器。电脑——右击,属性——设备管理——ADB interface(驱动精灵更新所有驱动)
C.ADB版本不正确。
http://blog.csdn.net/zi413293813/article/details/47980291

win10系统,“系统找不到文件”
[原因及解决办法](https://jingyan.baidu.com/article/48b37f8dcc374b1a6564884e.html)
闪退问题
[原因及解决办法](https://blog.csdn.net/lz576825608/article/details/81129537)
# 第一章 概述 ## 1.1 什么是Monkey测试? monkey是Android SDK中的一个小的插件,Monkey测试是Android自动化测试的一种手段,Monkey测试本身非常简单,就是模拟用户的按键输入,触摸屏输入,手势输入等,看设备多长时间会出异常。通过Monkey程序模拟用户触摸屏幕、滑动Trackball、按键等操作来对设备上的程序进行压力测试,检测程序多久的时间会发生异常。Monkey是Android中的一个命令行工具,可以实现对正在开发的应用程序进行压力测试;
## 1.2 Monkey测试的内容是什么? 它向系统发送伪随机的用户事件流(如按键输入、触摸屏输入、手势输入等),实现对正在开发的应用程序进行压力测试 ## 1.3 .为什么要进行monkey测试? 1. Monkey测试是一种为了测试软件的稳定性、健壮性的快速有效的方法; 2. Monkey 主要用于Android 的压力测试 3. 自动的一个压力测试小工具, 主要目的就是为了测试app 是否会Crash. 6.monkey测试示意图? ## 1.4 Monkey测试的有点是什么?有什么缺点? - 缺点:Monkey虽然可以根据一个指定的命令脚本发送按键消息,但其丌支持条件判断,也丌支持读取待测界 面的信息来执行验证操作。 # 第二章 环境的搭建 ==**环境=Android SDK+jdk**== ## 2.1 Android SDK ### 2.1.1 JAVA JDK下载与安装 ==**Android语言是基于JAVA语言的,所以安装AndroidSDK之前要确保机器上已安装了JAVA JDK。**== ### 2.1.2 Android SDK下载与安装 [官网地址](https://www.androiddevtools.cn)
[教程地址](https://blog.csdn.net/dr_neo/article/details/49870587)
安装注意事项:
1.安装好之后,把命令行从新关掉来过就可以。
2.把文件,名改为英文不能出现符号和汉字。否则会显示安装失败。
# 第三章 Monkey [Monkey常用命令及常见问题1](https://blog.csdn.net/plychoz/article/details/79791474)
[Monkey常用命令及常见问题2](https://www.cnblogs.com/bravesnail/articles/5850335.html)
# 第四章 Monkey日志解析 [教程](https://blog.csdn.net/qq_15158911/article/details/53444821) # 腾讯GT - 简介:GT工具是腾讯公司研发的,简单实用。工具能测试的性能指标有内存,cpu,fps等指标,直接把apk安装在要测试的目标手机上,安装后启动GT,在选择界面选择要测试的app即可。 [GT下载地址](https://gt.qq.com/download.html)

.参数介绍

AUT:被测应用

PSS:实际使用的物理内存(比例分配共享库占用的内存)

Private Dirty:非共享的,不能换页出去的内存大小。

jiffies: CPU时间片

MEM:内存

NET:不区分进程的流量

SIG:信号强度

FPS:每秒传输帧数

PNET:流量是针对应用的

PSS0:表示该应用的一个进程



你可能感兴趣的:(自动化测试)