我想让PYTEST在运行测试时以指定的时间间隔截屏。这就像我想要强制Web驱动程序同时执行这两个操作。
from pytest import fixture
@fixture(scope="function")
def drv(app_config):
options = app_config.browser[0]
service = app_config.browser[1]
drv = browser(options=options, service=service)
yield drv
@fixture(scope="function", autouse=True)
def recorder(drv):
while True:
drv.save_screenshot(f"./recordings/{str(time())}.png")
此刻。安装程序会创建一个Web驱动程序,然后停滞不前,无限期地截屏。
我希望Web驱动程序在执行其他操作(如打开浏览器、查找和单击元素等)时截屏,直到驱动程序关闭。
1条答案
按热度按时间zbdgwd5y1#
Pytest是一个测试框架,没有任何关于浏览器中发生的事情的上下文。您需要在单独的线程和循环中将WebDRIVER对象发送给该方法,直到WebDRIVER不被销毁,或者在您的驱动程序中实现该行为。
有两种方法可以实现这一点:
1.您可以使用Selify WebDriver附带的EventFiringWebDriver。基本上,您可以告诉Selify在导航之前/之后打印一些内容。
有一些事件的语气可以使用,你可以参考这个来源
1.使用Decorator模式并修饰Web驱动程序,使方法在给定间隔后为您的特定操作截取屏幕截图。