作者:wsx迪_257 | 来源:互联网 | 2024-12-23 16:09
在使用Selenium进行Web自动化测试时,有时会遇到浏览器窗口在执行过程中突然关闭或闪退的情况。这种问题通常与webdriver对象的实例化位置有关。以下是两个代码示例,分别展示了会导致闪退和不会闪退的情况。
不会闪退的情况
import unittest
from selenium import webdriver
class TestA(unittest.TestCase):
wb = webdriver.Chrome()
@classmethod
def setUpClass(cls) -> None:
print('开始')
def testA(self):
self.wb.get("https://www.baidu.com/")
self.wb.maximize_window()
print("A")
if __name__ == '__main__':
unittest.main()
会闪退的情况
import unittest
from selenium import webdriver
class TestA(unittest.TestCase):
@classmethod
def setUpClass(cls) -> None:
print('开始')
def testA(self):
wb = webdriver.Chrome()
self.wb.get("https://www.baidu.com/")
self.wb.maximize_window()
print("A")
if __name__ == '__main__':
unittest.main()
从上面的代码对比中可以看出,当webdriver对象实例化放在类的外部(即类属性)时,浏览器不会闪退;而当webdriver对象实例化放在方法内部时,浏览器会在测试结束后立即关闭。这是因为unittest框架在每次运行测试方法后会自动清理资源,包括关闭webdriver实例。因此,为了确保浏览器窗口在整个测试过程中保持打开状态,应该将webdriver对象实例化为类的属性或全局变量。