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)、回到本机运行上面的脚本。

你可能感兴趣的:(UI自动化测试)