python 的 module 天然是单例的,所以找个地方初始化 driver = webdriver.Chrome(),其他地方都 import 就行了
或者这样:
driver = webdriver.Chrome()
class BasePage:
def __init__(self):
self.driver = driver
创建两个不同的页面 P1,P2 继承 BasePage,打印 id(P1().driver),id(P2().driver) 可以看出是同一个对象,
如果 BasePage 里写成 self.driver = webdriver.Chrome(),那每次实例化都是一个新的 driver
还是不太明白,我这在用例层写用例,每次都会生成相关页面类,页面类继承基类,基类生成 driver,因为是单例,所有运行都没问题,但是 conftest 下不知道如何使用,用了你的方法,不知道理解对不对,在用例层,最开始就生成一个 driver,然后吧这 driver 导入 conftest,conftest 下的方法直接传入这个 driver,然后用例层的一条 case 跑这个 conftest 方法,接下去的操作也传入刚开始生成的 driver 但是报错了 E selenium.common.exceptions.InvalidSessionIdException: Message: A session is either terminated or not started
应该是没用同一个 driver