【Python】详解Python多线程Selenium跨浏览器测试-程序员宅基地

技术标签: python  测试  操作系统  

前言

在web测试中,不可避免的一个测试就是浏览器兼容性测试,在没有自动化测试前,我们总是苦逼的在一台或多台机器上安装N种浏览器,然后手工在不同的浏览器上验证主业务流程和关键功能模块功能,以检测不同浏览器或不同版本浏览器上,我们的web应用是否可以正常工作。

下面我们看看怎么利用python selenium进行自动化的跨浏览器测试。

什么是跨浏览器测试

跨浏览器测试是功能测试的一个分支,用以验证web应用能在不同的浏览器上正常工作。

为什么需要跨浏览器测试

通常情况下,我们都期望web类应用能够被我们的用户在任何浏览器上使用。例如,有的人喜欢用IE来打开开源优测web站点http://www.testingunion.com,但有的人喜欢firefox或chrome。

我们期望我们的web系统能在任何浏览器上正常的工作,这样能吸引更多的用户来使用。

需要跨浏览器测试的根源是:

在不同浏览器字体大小不匹配

  1. javascrpit的实现不一样
  2. css、html的验证有所区别
  3. 有的浏览器或低版本不支持HTML5
  4. 页面对齐和div大小问题
  5. 图片位置或大小问题
  6. 浏览器和操作系统间的兼容问题

以上几个方面不仅仅对布局有影响,甚至会导致功能不可用,所以我们需要进行跨浏览器测试。

如何执行跨浏览器测试

如果我们使用selenium webdriver,那我们就能够自动的在IE、firefox、chrome、等不同浏览器上运行测试用例。

为了能在同一台机器上不同浏览器上同时执行测试用例,我们需要多线程技术。

下面我们基于python的多线程技术来尝试同时启动多个浏览器进行selenium自动化测试。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
#-*- coding:utf-8 -*-
 
__author__ = u '苦叶子'
 
from selenium import webdriver
import sys
from time import sleep
from threading import Thread
 
reload (sys)
sys.setdefaultencoding( "utf-8" )
 
def test_baidu_search(browser, url):
   driver = None
   # 你可以自定义这里,添加更多浏览器支持进来
   if browser = = "ie" :
     driver = webdriver.Ie()
   elif browser = = "firefox" :
     driver = webdriver.Firefox()
   elif browser = = "chrome" :
     driver = webdriver.Chrome()
 
   if driver = = None :
     exit()
 
   print u "开始[case_0001]百度搜索"
   driver.get(url)
 
   print u "清除搜索中数据,输入搜索关键词"
   driver.find_element_by_id( "kw" ).clear()
   driver.find_element_by_id( "kw" ).send_keys(u "开源优测" )
 
   print u "单击 百度一下 按钮 开始搜索"
   driver.find_element_by_id( "su" ).click()
   sleep( 3 )
 
   print u "关闭浏览器,退出webdriver"
   driver.quit()
 
 
if __name__ = = "__main__" :
   # 浏览器和首页url
   data = {
     "ie" : "http://www.baidu.com" ,
     "firefox" : "http://www.baidu.com" ,
     "chrome" : "http://www.baidu.com"
     }
 
   # 构建线程
   threads = []
   for b, url in data.items():
     t = Thread(target = test_baidu_search,args = (b,url))
     threads.append(t)
 
   # 启动所有线程
   for thr in threads:
     thr.start()

运行上述代码,你会发现三个浏览器都会启动开始进行百度搜索,是不是很有意思?当然上面只是简单的演示,更多更实用的能力有待挖掘。

总结

本文初始演示了利用python多线程技术来启动多个浏览器同时进行selenium自动化测试,通过这个示例你应该要去学习更深入的知识,和深入结合实际业务测试梳理出更合适的自动化测试业务场景。

至于如何更深入的利用selenium把兼容性测试做好,还有待深入研究挖掘,真正的把selenium的特性用好。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

原文链接:http://www.jianshu.com/p/9a05cc7d0f96#

转载于:https://www.cnblogs.com/zhuzhubaoya/p/7308167.html

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/alexlau2016/article/details/101373113

智能推荐

AE内置效果1_match grain-程序员宅基地

文章浏览阅读639次。文章目录解释步骤match grain(添加杂色)解释 addgrain是用来合成CG渲染视频、绿幕素材、蓝幕素材的效果,甚至是直接加到CG场景里面,在AE里面比较相似的效果叫做match grain addgrain最关键的一点就是:从无到有的生成一些噪点出来步骤选择effect->Noise&Grain->addgrain修改基础设置:1、一般..._match grain

Mybatis的你所不知ResultMap生成方式_根据sql语句生成resultmap-程序员宅基地

文章浏览阅读4.1k次,点赞4次,收藏6次。三种方式//第一种 @ConstructorArgs({ @Arg(column = "id", javaType = Integer.class, id = true), @Arg(column = "userName", javaType = String.class, id = false), @Arg(column = "password", javaType = String.class, id = false)} _根据sql语句生成resultmap

Detected jump back in time of XXs. Clearing TF buffer.解决办法_detected jump back in time of 0.000678472s. cleari-程序员宅基地

文章浏览阅读3.4k次,点赞5次,收藏5次。跑move_base的时候突然出现这个错误,结果amcl定位跑偏,机器人直接疯跑:Detected jump back in time of 2.72104s. Clearing TF buffer.发现是系统时间自动同步网络造成了时间变化(我还以为ROS内部有专门的计时器,居然受系统时间影响)手动更改时间也会触发这个错误。关掉系统时间通过网络同步即可。..._detected jump back in time of 0.000678472s. clearing tf buffer.

Python算法总结(七)Adaboost(附手写python实现代码)_adaboost算法python代码-程序员宅基地

文章浏览阅读3.7k次,点赞3次,收藏37次。注:adaboost可以做分类也可以做回归,本篇以构建二分类模型为例,通过手写代码,加深对算法原理与流程的理解。一、算法类型有监督的分类算法二、算法原理- 分类器的错误率:- 弱分类器的权重:注:错误率越高,该分类器的权重越小- 正确分类的样本权重:- 错误分类的样本权重:注:初始化样本权重是相等的;如果该样本被错误分类,则在下一轮该样本的权重被提高三、手写Python算法def classify(xmat,i,threshold,mark): ''' 函数功能_adaboost算法python代码

“C语言与揭秘文件:从内存到外部存储的旅程“-程序员宅基地

文章浏览阅读1.7k次,点赞41次,收藏29次。文件是相关数据的集合,通常存放在外部介质上,并在使用时加载到内存中。程序执行时的数据存储在内存中,但只能临时保存,需以文件形式永久保存。C语言将外部设备视为文件,统一处理磁盘文件和设备文件,为程序设计提供便利。

备战蓝桥杯------递归算法及经典例子_蓝桥杯考递归多吗?-程序员宅基地

文章浏览阅读2.6k次,点赞6次,收藏23次。递归算法在程序中不断反复调用自身的方法调用方式。此处的重点是调用自身递归满足两个条件1.有反复执行的过程(调用自身)2.有跳出反复执行过程的条件(递归出口)递归算法在软件竞赛中,考察的非常多我的qq:1527624144 希望和大家交流,一起努力进入总决赛经典例子:1.求10的阶乘public class A13 { public static void main(String[] arg..._蓝桥杯考递归多吗?

随便推点

springboot 静态目录访问以及下载文件破损_springboot文件下载残缺-程序员宅基地

文章浏览阅读1.8k次。static目录的访问情景项目中需要做一个模板文件下载的功能,可以采用将文件流写入response,然后返回response这种方式。但本次直接使用的a标签,地址指向目标文件路径,从而实现文件下载。问题于是需要访问静态文件,springboot中将静态文件放置在resource下的static中,templates用来存放html页面文件。但访问的时候,直接报404。静态文件访问不到..._springboot文件下载残缺

一个工作7年JAVA工程师面试总结:掌握这些技术,offer拿到手软_7年java软件工程师面试-程序员宅基地

文章浏览阅读2.2k次,点赞3次,收藏40次。曾面试了阿里集团(菜鸟网络,蚂蚁金服),网易,滴滴,点我达,最终收到点我达,网易offer,蚂蚁金服二面挂掉,菜鸟网络一个月了还在流程中…最终有幸去了网易。但是要特别感谢点我达的领导及HR,真的非常非常好,很感谢他们一直的关照和指导。小编在这里给大家整理了包括但不限于:JAVA基础和进阶类、Spring、Spring boot、Spring MVC、MyBatis、MySQL、JVM等面试题。_7年java软件工程师面试

【8】tkinter代码---对图片进行高斯滤波、边缘锐化、中值滤波、旋转图片、灰度处理等图像处理_tk锐化 教程-程序员宅基地

文章浏览阅读129次。设置窗口,打开单张图片,对图片进行高斯滤波、边缘锐化、中值滤波、旋转图片、灰度处理几个方面的图像增强处理,最后将处理过的图片保存在本地。运行界面对图片处理界面。_tk锐化 教程

关于p操作和v操作的理解_pv操作中p和v各代表什么-程序员宅基地

文章浏览阅读4.9w次,点赞43次,收藏130次。操作系统之PV操作今天在做操作系统老师布置的操作系统作业,但是碰到了一个有关pv操作的问题,由于对pv操作的理解不是很透彻,所以我查阅了很多资料,下面来简单的通俗的介绍一下pv操作1、信号量 公用信号量:实现进程间的互斥,初值=1或资源的数目 私用信号量:实现进程间的同步,初值=0或某个整数2、信号量S的物理意义:S>=0时表示某资源的可用数,s3、P操作表示申请一_pv操作中p和v各代表什么

Matlab信号处理综合工具_matlab中sptool在哪里-程序员宅基地

文章浏览阅读3.2k次,点赞5次,收藏16次。使用信号综合工具SPTool可以进行如下操作:1)信号分析2)设计滤波器3)分析滤波器4)对信号滤波器进行处理5)分析信号频率1打开信号处理工具SPtool在APPS菜单中点击Signal Analysis即可进入SPTool界面如下分别有3个列表框Signals、Filters和Spectra,列表参数分别为信号、滤波器和频域谱。其中,Signa..._matlab中sptool在哪里

SSA-CNN-GRU-Attention回归预测 | Matlab 基于麻雀算法优化卷积神经网络-门控循环单元结合注意力机制-程序员宅基地

文章浏览阅读70次。SSA-CNN-GRU-Attention回归预测 | Matlab 基于麻雀算法优化卷积神经网络-门控循环单元结合注意力机制

推荐文章

热门文章

相关标签