是否可以一次运行一个硒测试的多个实例?

时间:2018-04-02 19:24:29

标签: python selenium webdriver

我做了一些研究,并且共识似乎表明,如果没有大量的知识和工作,这是不可能的。但是,是否可以同时在不同的选项卡中运行相同的测试?如果是这样,我该怎么办呢?我正在使用python并尝试同时运行3-5次相同的测试。这不是通用测试,因此我不关心它是否会中断干净的测试环境。

2 个答案:

答案 0 :(得分:2)

我认为你可以做到这一点。但我觉得更好或更简单的方法是使用不同的窗口。说过我们可以使用multithreadingmultiprocessingsubprocess模块来并行触发任务(接近并行)。

多线程示例

让我向您展示一个关于如何使用threading模块生成多个测试的简单示例。

from selenium import webdriver
import threading
import time


def test_logic():
    driver = webdriver.Firefox()
    url = 'https://www.google.co.in'
    driver.get(url)
    # Implement your test logic
    time.sleep(2)
    driver.quit()

N = 5   # Number of browsers to spawn
thread_list = list()

# Start test
for i in range(N):
    t = threading.Thread(name='Test {}'.format(i), target=test_logic)
    t.start()
    time.sleep(1)
    print t.name + ' started!'
    thread_list.append(t)

# Wait for all thre<ads to complete
for thread in thread_list:
    thread.join()

print 'Test completed!'

我在这里产生5个浏览器,一次运行测试用例。为了演示,我没有实施测试逻辑,而是将睡眠时间设为2秒。该代码将启动5个firefox浏览器(使用python 2.7测试),打开谷歌并等待2秒后再退出。

日志:

C:\Python27\python.exe C:/Users/swadchan/Documents/TestPyCharm/stackoverflow/so49617485.py
Test 0 started!
Test 1 started!
Test 2 started!
Test 3 started!
Test 4 started!
Test completed!

Process finished with exit code 0

答案 1 :(得分:0)

看看TestNG,你应该能够找到实现这一目标的框架。

我做了一个简短的检查,这里有几个链接可以帮助你入门:

Parallel Execution & Session Handling in Selenium

Parallel Execution using Selenium Webdriver and TestNG

如果你想要一个可以做并行执行以及大规模负载测试的可靠的rebost框架,那么请看TurboSelenium:https://butlerthing.io/products#demovideo。给我们留言,很高兴与您讨论。