python+selenium:简单实现多线程执行测试用例和多线程分布式执行测试用例
1、多线程执行测试用例
环境:Win10 x64, python 37, selenium 2.5, Firefox 46等
from threading import Thread from selenium import webdriver from time import ctime, sleep def test_baidu(browser, search): """测试用例""" print('start:%s' % ctime()) print('browser:%s' % browser) if browser == 'chrome': driver = webdriver.Chrome() elif browser == 'ie': driver = webdriver.Edge() elif browser == 'firefox': driver = webdriver.Firefox() else: print('browser参数有误') 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': 'threading', 'firefox': 'python', 'ie': 'java'} threads = [] files = range(len(lists)) # 创建线程 for browser, serach in lists.items(): t = Thread(target=test_baidu, args=(browser, serach)) threads.append(t) # 启动线程 for t in files: threads[t].start() for t in files: threads[t].join() print('end:%s' % ctime())
2、多线程分布式执行测试用例
环境:Win10 x64, python 37, selenium 2.5, selenium grid 2.5, VM虚拟机, Firefox 46等。
分布式顾名思义就是在多个环境或多个系统上运行,这样做得好处有很多,如:节省时间,可测兼容等等
这里需要说明的是,加了selenium grid,下载地址:,需要下与selenium相同版本的。下载后放在本机和虚拟机上。
注意:虚拟机上要有selenium可运行的环境,即与本机一样的环境。这边自己配就不讲解。
1)、脚本如下:
from threading import Thread from selenium import webdriver from time import sleep, ctime def test_baidu(host, browser): """测试用例""" print('start:%s' % 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.close() if __name__ == '__main__': lists = {'http://127.0.0.1:4444/wd/hub': 'chrome', 'http://127.0.0.1:5555/wd/hub': 'MicrosoftEdge', 'http://192.168.75.132:6666/wd/hub': 'firefox' } threads = [] files = range(len(lists)) # 创建线程 for host, browser in lists.items(): t = Thread(target=test_baidu, args=(host, browser)) threads.append(t) # 启动线程 for i in files: threads[i].start() for i in files: threads[i].join() print('end:%s' % ctime())
2)、在本地主机启动一个hub 和 一个node ,打开两个终端分别输入:
java -jar selenium-server-standalone-2.52.0.jar -role hub
默认端口:4444
java -jar selenium-server-standalone-2.52.0.jar -role node -port 5555
备注:需要在selenium-server-standalone-2.52.0.jar的路径下执行!如需要多个节点增加端口即可
3)、在虚拟机的终端执行
java -jar selenium-server-standalone-2.52.0.jar -role node -port 6666 -hub http://192.168.75.1:4444/grid/register
4)、回到本机运行上面的脚本。

浙公网安备 33010602011771号