Python 是否可以设定硒测试的时间限制?

Python 是否可以设定硒测试的时间限制?,python,firefox,selenium,selenium-webdriver,Python,Firefox,Selenium,Selenium Webdriver,我们为Chrome、Firefox和Safari开发扩展,并使用Selenium测试我们的Chrome和Firefox扩展。但问题是,一些Firefox测试会停滞数小时,只有在我们停止显示时才会停止(我们也可以停止测试过程)。是否可以为硒测试设置时间限制(15分钟),如果达到时间限制,测试将失败?我尝试设置页面加载超时,但无法解决问题: self.driver = webdriver.Firefox(firefox_profile=firefox_profile) time.sleep(30)

我们为Chrome、Firefox和Safari开发扩展,并使用Selenium测试我们的Chrome和Firefox扩展。但问题是,一些Firefox测试会停滞数小时,只有在我们停止显示时才会停止(我们也可以停止测试过程)。是否可以为硒测试设置时间限制(15分钟),如果达到时间限制,测试将失败?我尝试设置页面加载超时,但无法解决问题:

self.driver = webdriver.Firefox(firefox_profile=firefox_profile)
time.sleep(30)
self.driver.set_window_size(width=1920, height=1080)
size = self.driver.get_window_size()
print("Window size: width = {}px, height = {}px.".format(size["width"], size["height"]))
self.driver.set_page_load_timeout(time_to_wait=45)
我们正在使用Selenium
2.45.0
。我们需要升级吗


我的类继承自
unittest.TestCase

嗯,一个奇怪的解决方法是使用线程。 线程是同时运行Python程序两部分的一种方式。您可以在运行其他代码的同时运行计时器,当计时器用完时,运行
kill
命令。 比如说

from thread import start_new_thread
import os
import time
def your_code():
    # Your code
def timer(): # Say the time limit is 15 minutes
    for i in range(16):
        for z in range(60):
            time.sleep(1)
            print i,z
        if i >= 15:
            os.system("sudo killall Xvbf")

start_new_thread(your_code)
start_new_thread(timer)
while 1:
    pass
其他资源:


快乐编码!祝你好运

您可以尝试使用超时装饰器进行测试

import time
import timeout_decorator

@timeout_decorator.timeout(5)
def mytest():
print "Start"
for i in range(1,10):
    time.sleep(1)
    print "%d seconds have passed" % i

if __name__ == '__main__':
    mytest()

有关更多详细信息,请参阅:

测试被卡住的原因是什么?@drkthng我不知道,但测试恰好在60分钟后停止(我不确定它们是否通过或失败)。如果运行
sys.exit()
(需要
导入sys
),Selenium会立即停止并关闭打开的浏览器因此,您可以在脚本中启动第二个线程,该线程休眠15分钟,然后执行
sys.exit()
。您只需为可能长时间运行或卡住的各种函数添加超时。要找到这些,请在输入测试的各个部分、调用函数等时记录消息,以便在脚本卡住时可以看到脚本的进度。@576i
sys.exit()
从第二个线程退出不会停止主线程。我不希望停止显示(
Xvbf
),因为(1)测试可以在Windows上执行,以及(2)相同的显示用于20个测试,如果我杀死它,它们将全部失败。@Uri我诚实地使用了post XD中的示例,您可以使用任何您想要的终止命令。我使用了
@timeout\u decorator.timeout(900)
15分钟,我想检查所有浏览器,但我认为它可以工作。但问题是,它不能在我的本地计算机(Windows)上运行,只能在Ubuntu服务器上运行。在我的计算机上,我收到以下错误消息:
AttributeError:“module”对象在
timeout\u decorator.py
的第66行中没有属性“SIGALRM”
。我可以在我的计算机上不使用decorator运行测试,但是有可能在我的计算机上修复此错误吗?即使在计算机上运行测试时禁用超时。我不认为这在windows中是可能的,因为信号是特定于POSIX系统的。我需要一个解决方案,至少在windows上禁用装饰器,但让它在Linux上工作。我接受这个答案,我将发布一个新问题,如何使它在windows上工作。