pytest中使用selenium代码运行完后浏览器自动关闭
遇到的问题
在用selenium做web自动化测试时,测试用例执行完后,自动关闭浏览器
if cls.__driver is not None and cls.__switch is False:
cls.__driver.quit()
cls.__driver = None
在写代码的时候发现,就算设置了前后置,并且添加了判断已经创建了浏览器驱动实例,并且switch标记为False才执行关闭操作,通过调试发现,就算跳过了这个判断,浏览器还是会自动关闭,运行窗口没有任何提示。
调试后发现,原来是WebDriver的机制问题。默认情况下,当 WebDriver 会话结束时,浏览器窗口会自动关闭。通过设置 "detach"
选项为 True
,可以防止这种情况发生。
def get_driver(cls):
if cls.__driver is None:
options = webdriver.ChromeOptions()
options.add_experimental_option('detach', True)
cls.__driver = webdriver.Chrome(options=options)
cls.__driver.maximize_window()
cls.__driver.implicitly_wait(10)
return cls.__driver