
正文
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()))






