测试人社区

PageObject问题

看了书中的代码和录播,自己写了代码,有几处还是不理解,可以详细解释下原因么?

问题一:

问题二:

这两个是一个问题,driver的初始化就是打开浏览器维持session,所以不能重复的初始化。避免重复的初始化,就得复用已有的driver并把这个driver传递到各个po里,所以才需要初始化传参。

避免传参还有个办法就是用类变量或者全局变量,缺点是不利于多线程。

这么理解对吧,后面传入self._driver实际上就是就是传入之前赋值的webdriver.Chrome(),如果不传入就会重新再次进行赋值,此时没有对url进行赋值,所以会打开google浏览器一个空页面。
driver参数就是为了进行重新调用,引用原来的浏览器,传入self._driver后,复用之前的浏览器,页面停留在企业微信注册页,此时就可以定位注册页面的元素了。

因为base里的默认初始化是传入已经存在的值就复用,不传就重新初始化一个新的,所以才会有这种效果。