Selenium_多线程执行测试用例
多线程执行测试用例
这里以百度搜索为例,通过不同的浏览器来启动不同的线程。
#!/usr/bin/env python
# _*_ coding:utf-8 _*_
__author__ = 'YinJia' from threading import Thread
from selenium import webdriver
from time import ctime,sleep #测试用例
def test_baidu(browser,search):
print('start: {0}'.format(ctime()))
print('browser: {0}'.format(browser))
if browser == "ie":
driver = webdriver.Ie()
elif browser == "chrome":
driver = webdriver.Chrome()
elif browser == "ff":
driver = webdriver.Firefox()
else:
print("browser参数有误,只能为 ie、ff、chrome") driver.get("http://www.baidu.com")
driver.find_element_by_id("kw").send_keys(search)
driver.find_element_by_id("su").click()
sleep(2)
driver.quit() if __name__=="__main__":
lists = {'chrome':'C++','ie':'JAVA','ff':'python'}
threads = []
files = range(len(lists)) #创建线程
for browser,search in lists.items():
t = Thread(target=test_baidu,args=(browser,search))
threads.append(t)
#启动线程
for t in files:
threads[t].start()
for t in files:
threads[t].join()
print('end: {0}'.format(ctime())) 运行结果:
start: Mon Aug 20 00:09:50 2018
browser: chrome
start: Mon Aug 20 00:09:50 2018
browser: ie
start: Mon Aug 20 00:09:50 2018
browser: ff
end: Mon Aug 20 00:10:09 2018
可见同时运行三个不同的浏览器环境执行测试用例。
多线程分布式执行测试用例
Selenium Grid本身不提供并发执行用例,只是提供多系统、多浏览器执行环境,鉴于并发执行需要用到多线程技术结合Grid来实现分布式并发执行测试用例。
在一台主机上启动一个hub主节点和一个node分支节点,另一台主机启动一个node分支节点如下所示:
- 启动本机hub主机:java -jar selenium-server-standalone-2.53.0.jar -role hub [默认4444端口]
- 启动本机node分支节点:java -jar selenium-server-standalone-2.53.0.jar -role node -port 5555
- 在远程主机启动node分支节点:java -jar selenium-server-standalone-2.53.0.jar -role node -port 6666 -hub http://192.168.31.210:4444/grid/register
#!/usr/bin/env python
# _*_ coding:utf-8 _*_
__author__ = 'YinJia' from threading import Thread
from selenium import webdriver
from time import ctime,sleep #测试用例
def test_baidu(host,browser):
print('start:{0}'.format(ctime()))
print(host,browser)
dc = {'browserName':browser}
driver = webdriver.Remote(command_executor=host,
desired_capabilities=dc)
driver.get("http://www.baidu.com")
driver.find_element_by_id("kw").send_keys(browser)
driver.find_element_by_id("su").click()
sleep(2)
driver.quit() if __name__=="__main__":
#启动参数(指定运行主机与浏览器)
lists = {'http://127.0.0.1:4444/wd/hub':'chrome',
'http://192.168.31.230:6666/wd/hub': 'internet explorer',
'http://1127.0.0.1:5555/wd/hub': 'firefox'}
threads = []
files = range(len(lists)) #创建线程
for browser,search in lists.items():
t = Thread(target=test_baidu,args=(browser,search))
threads.append(t)
#启动线程
for t in files:
threads[t].start()
for t in files:
threads[t].join()
print('end: {0}'.format(ctime()))
Selenium_多线程执行测试用例的更多相关文章
- pytest多进程/多线程执行测试用例
前言: 实际项目中的用例数量会非常多,几百上千:如果采用单进程串行执行的话会非常耗费时间.假设每条用例耗时2s,1000条就需要2000s $\approx$ 33min:还要加上用例加载.测试前/后 ...
- selenium+python-unittest多线程执行用例
前言 假设执行一条脚本(.py)用例一分钟,那么100个脚本需要100分钟,当你的用例达到一千条时需要1000分钟,也就是16个多小时...那么如何并行运行多个.py的脚本,节省时间呢?这就用到多线程 ...
- python--selenium多线程执行用例实例/执行多个用例
python--selenium多线程执行用例实例/执行多个用例 我们在做selenium测试的时候呢,经常会碰到一些需要执行多个用例的情况,也就是多线 程执行py程序,我们前面讲过单个的py用例怎么 ...
- selenium+python自动化90-unittest多线程执行用例
前言 假设执行一条脚本(.py)用例一分钟,那么100个脚本需要100分钟,当你的用例达到一千条时需要1000分钟,也就是16个多小时... 那么如何并行运行多个.py的脚本,节省时间呢?这就用到多线 ...
- unittest多线程执行用例
前言 假设执行一条脚本(.py)用例一分钟,那么100个脚本需要100分钟,当你的用例达到一千条时需要1000分钟,也就是16个多小时... 那么如何并行运行多个.py的脚本,节省时间呢?这就用到多线 ...
- Python-Unittest多线程执行用例
前言 假设执行一条脚本(.py)用例一分钟,那么100个脚本需要100分钟,当你的用例达到一千条时需要1000分钟,也就是16个多小时... 那么如何并行运行多个.py的脚本,节省时间呢?这就用到多线 ...
- maven打包不执行测试用例
在执行maven打包时不需要执行测试用例,使用如下2种方式实现:-DskipTests=true : 不执行测试用例,但编译测试用例类生成相应的class文件至target/test-classes下 ...
- Python单元测试框架之pytest---如何执行测试用例
介绍 pytest是一个成熟的全功能的Python测试工具,可以帮助你写出更好的程序. 适合从简单的单元到复杂的功能测试 l 模块化parametrizeable装置(在2.3,持续改进) l 参 ...
- (委托事件处理)关于多线程执行显示进度条的实例(转)&&线程间操作无效: 从不是创建控件“rtxtEntryNO”的线程访问它。
关于多线程执行显示进度条的实例! 之前回答了一篇关于怎么在线程中操作进度条的帖子,估计有人看的不是很明白今天没事,写了一个小小的实例,很简单,就2个文件权当抛砖引玉,希望有更好解决方案的人发表一下意见 ...
随机推荐
- SenseTime Ace Coder Challenge 暨 商汤在线编程挑战赛 A. 地铁站
//其实比赛的时候就想到这方法了,但看到数据太吓人,就没写//看着标程,实际上就是这方法,太坑爹…… /* 假设值为k,对于图中任意两点,圆1半径k/t1,圆2半径k/t2 圆1与圆2的交集为可以设置 ...
- C标准库函数--文件IO操作函数。
C标准库文件读写函数总结:都是对文件流进行输入输出的函数分为对文件的有格式读写以及无格式读写 一.文件的无格式读写根据每次读写字符的数量,分为三类:1.按字符读写文件 按字符读有三个函数:以下三个函数 ...
- strut2以及路径的一些问题
Struts2一个Action内包含多个请求处理方法的处理,method的使用方法,struts2中 struts2的关于method=“{1}"意思详解 <action name ...
- R语言 神经网络算法
人工神经网络(ANN),简称神经网络,是一种模仿生物神经网络的结构和功能的数学模型或计算模型.神经网络由大量的人工神经元联结进行计算.大多数情况下人工神经网络能在外界信息的基础上改变内部结构,是一种自 ...
- lower_bound/upper_bound example
http://www.cplusplus.com/reference/algorithm/upper_bound/左闭右开 Return iterator to lower bound Returns ...
- C语言基础语法
#include <stdio.h> int main() { int age; printf("input your age"); scanf("%d&qu ...
- Oracle 中常用数据字典大总结
原文出处:小宝马的爸爸 - 梦想的家园 前面呢,也断断续续的介绍了一些诸如 Sql*Plus 等等关于 Oracle 的基本的内容, 对于 Oracle 这样的大型数据库呢,自身的运行和维护也是个不得 ...
- day9 类、对象、包
结构化编程中,程序围绕要解决的问题来设计. 面向对象编程,围绕要解决问题的对象来设计. 万物皆对象,对象因关注而产生!!! 类——抽取具有相同属性和行为的对象. 属性就是对象身上的值数据,行为就是对象 ...
- bzoj千题计划143:bzoj1935: [Shoi2007]Tree 园丁的烦恼
http://www.lydsy.com/JudgeOnline/problem.php?id=1935 二维偏序问题 排序x,离散化树状数组维护y #include<cstdio> #i ...
- jmeter编写beanshell及内置方法的使用
(一)BeanShell简介 BeanShell是一个小型嵌入式Java源代码解释器,具有对象脚本语言特性,能够动态地执行标准JAVA语法,并利用在JavaScript和Perl中常见的的松散类型.命 ...