使用Appium自动化应用时是否需要单独退出所有driver实例?
关于driver实例quit操作的疑问解答
- 执行
X.getDriver().quit()会直接销毁当前唯一的driver实例,不存在多实例残留的问题
你在X类中仅初始化了一次driver实例,getDriver()方法返回的是该实例的内存引用,Y类中赋值的变量只是指向了同一个实例的地址,并没有创建新的driver实例,两者本质上对应同一个浏览器驱动进程。 - 不需要额外对Y类中的driver变量执行quit操作
quit()方法的作用是直接终结底层驱动进程、关闭所有关联的浏览器窗口,只要对该实例执行一次quit操作,所有指向该实例的引用都会对应已销毁的对象,后续再调用Y类中driver的任何操作都会抛出会话不存在的异常,重复调用quit也没有实际意义。
补充注意:如果你的
getDriver()方法逻辑是每次调用都新建driver实例的话才会存在多实例的问题,但按照你描述的「初始化一次、封装get方法拿实例」的单例逻辑,上述结论完全适用。
内容的提问来源于stack exchange,提问作者Faiza A.
相关产品推荐
相关产品推荐

