Selenium_多线程执行测试用例

多线程执行测试用例

这里以百度搜索为例,通过不同的浏览器来启动不同的线程。

 1 #!/usr/bin/env python
 2 # _*_ coding:utf-8 _*_
 3 __author__ = ‘YinJia‘
 4
 5 from threading import Thread
 6 from selenium import webdriver
 7 from time import ctime,sleep
 8
 9 #测试用例
10 def test_baidu(browser,search):
11     print(‘start: {0}‘.format(ctime()))
12     print(‘browser: {0}‘.format(browser))
13     if browser == "ie":
14         driver =  webdriver.Ie()
15     elif browser == "chrome":
16         driver = webdriver.Chrome()
17     elif browser == "ff":
18         driver = webdriver.Firefox()
19     else:
20         print("browser参数有误,只能为 ie、ff、chrome")
21
22     driver.get("http://www.baidu.com")
23     driver.find_element_by_id("kw").send_keys(search)
24     driver.find_element_by_id("su").click()
25     sleep(2)
26     driver.quit()
27
28 if __name__=="__main__":
29     lists = {‘chrome‘:‘C++‘,‘ie‘:‘JAVA‘,‘ff‘:‘python‘}
30     threads = []
31     files = range(len(lists))
32
33     #创建线程
34     for browser,search in lists.items():
35         t = Thread(target=test_baidu,args=(browser,search))
36         threads.append(t)
37     #启动线程
38     for t in files:
39         threads[t].start()
40     for t in files:
41         threads[t].join()
42     print(‘end: {0}‘.format(ctime()))
43
44 运行结果:
45 start: Mon Aug 20 00:09:50 2018
46 browser: chrome
47 start: Mon Aug 20 00:09:50 2018
48 browser: ie
49 start: Mon Aug 20 00:09:50 2018
50 browser: ff
51 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
 1 #!/usr/bin/env python
 2 # _*_ coding:utf-8 _*_
 3 __author__ = ‘YinJia‘
 4
 5
 6 from threading import Thread
 7 from selenium import webdriver
 8 from time import ctime,sleep
 9
10 #测试用例
11 def test_baidu(host,browser):
12     print(‘start:{0}‘.format(ctime()))
13     print(host,browser)
14     dc = {‘browserName‘:browser}
15     driver = webdriver.Remote(command_executor=host,
16                               desired_capabilities=dc)
17     driver.get("http://www.baidu.com")
18     driver.find_element_by_id("kw").send_keys(browser)
19     driver.find_element_by_id("su").click()
20     sleep(2)
21     driver.quit()
22
23 if __name__=="__main__":
24     #启动参数(指定运行主机与浏览器)
25     lists = {‘http://127.0.0.1:4444/wd/hub‘:‘chrome‘,
26              ‘http://192.168.31.230:6666/wd/hub‘: ‘internet explorer‘,
27              ‘http://1127.0.0.1:5555/wd/hub‘: ‘firefox‘}
28     threads = []
29     files = range(len(lists))
30
31     #创建线程
32     for browser,search in lists.items():
33         t = Thread(target=test_baidu,args=(browser,search))
34         threads.append(t)
35     #启动线程
36     for t in files:
37         threads[t].start()
38     for t in files:
39         threads[t].join()
40     print(‘end: {0}‘.format(ctime()))

原文地址:https://www.cnblogs.com/yinjia/p/9503397.html

时间: 2024-10-10 21:25:15

Selenium_多线程执行测试用例的相关文章

多线程执行测试用例二

计算密集型 vs. IO密集型 计算密集型任务的特点是要进行大量的计算,消耗CPU资源,比如计算圆周率.对视频进行高清解码等等,全靠CPU的运算能力.这种计算密集型任务虽然也可以用多任务完成,但是任务越多,花在任务切换的时间就越多,CPU执行任务的效率就越低,所以,要最高效地利用CPU,计算密集型任务同时进行的数量应当等于CPU的核心数.对于计算密集型任务,最好用运行效率高的C语言编写.也可使用python多进程,充分利用多cpu. 涉及到网络.磁盘IO的任务都是IO密集型任务,这类任务的特点是

Python 多线程执行测试用例并生成多个报告

为了满足之前的需求,同时运行多个测试用例. 1 #! /usr/bin/env python 2 #coding=utf-8 3 import threading 4 from multiprocessing import Queue 5 from time import ctime,sleep 6 from subprocess import Popen,PIPE 7 import os,time 8 lock=threading.Lock() 9 #单个测试用例生成的临时报告,当前目录下re

selenium之批量执行测试用例

把写好的测试用例放在指定目录下,使用discover函数扫描该目录,并根据关键字自动筛选需要执行的用例.本例使用Python3.6版本. 1 # 遍历指定目录,批量执行测试用例 2 import unittest 3 4 case_dir = 'D:\\test_case' 5 6 7 def suites_run(): 8 '''运行测试套件,批量执行测试用例''' 9 # discover函数遍历指定目录,按条件过滤文件,返回测试套件列表 10 discover_suites = unitt

python之多线程执行和非线程执行的对比

一.非线程执行(普通的执行) 1.非线程运行,简单代码如下 #_*_coding:utf-8_*_ import time import threading a = [] b = [] def func1():     print "func1 start %s" % time.ctime()     alist = ["192.168.1.100","192.168.1.120","192.168.1.134","

Python单元测试框架之pytest---如何执行测试用例

介绍 pytest是一个成熟的全功能的Python测试工具,可以帮助你写出更好的程序. 适合从简单的单元到复杂的功能测试 l 模块化parametrizeable装置(在2.3,持续改进) l 参数化测试函数(用例) l 标记测试功能与属性 l Skip和xfail:处理不成功的测试用例(在2.4改进) l 通过xdist插件分发测试到多个CPU l 不断地重新运行失败的测试 l 灵活约定的Python测试发现 Home Page: http://pytest.org 安装 >pip insta

java多线程执行问题

class Demo extends Thread{ public Demo(String name){ super(name); } public void run(){ for(int i=0; i<6; ++i){ System.out.println("i = " + i + "......Thread=" + Thread.currentThread().getName()); try{ Thread.sleep(100); }catch(Inter

关于多线程执行显示进度条的实例(转)&amp;&amp;线程间操作无效: 从不是创建控件“rtxtEntryNO”的线程访问它。

关于多线程执行显示进度条的实例! 之前回答了一篇关于怎么在线程中操作进度条的帖子,估计有人看的不是很明白今天没事,写了一个小小的实例,很简单,就2个文件权当抛砖引玉,希望有更好解决方案的人发表一下意见 界面上2个控件,一个按钮和一个进度条using System;using System.Threading;using System.Windows.Forms; namespace WindowsFormsApplication2{    public partial class Form1 :

批处理实现多线程执行命令列表文件

批处理实现多线程执行命令列表 工作中碰到多线程执行命令列表的情况,研究一番,编写出来与大家分享.高手看了也请指点,指教一些更简单的办法. 批处理是一种单线程的简单脚本,只有上条命令执行完后,才能执行下条命令.如果上条命令执行花费很长时间,如超时,连接失败不断尝试等,下一条命令头发白了,可能还等不到它执行. 百度问答上找到一个方法可以实现多线程,原理:利用bat调用bat来实现多线程. 例如:网管希望同时ping局域中所有主机,实现方法如下. 首先,建立两个批处理文件: 1.bat文件代码如下:

java多线程执行任务,处理共享成员变量的安全问题

java多线程执行任务时,为了避免任务的重复执行,可以通过synchronized关键字处理共享成员变量,具体代码如下: // 多线程处理任务方法 private void processMultiTask(final List<LogStatTask> list, int threadCount) throws Exception { // 根据设定的线程数处理任务列表 for (int i = 0; i < threadCount; i++) { TaskThread thread