测试人社区

关于basepage,封装find方法的一些疑问

假如黑名单有[1,2,3]
那红框内不是一定会大于0吗,还有elements[0]不是每次都只点击了第一个黑名单吗,别的不就没有遍历到了。

每次只点一个,但他会多次循环的,你看红框后面代码return self.find(xxx),反复调用find方法,会多次找到黑名单的!

        for i in self._black_list:
            element=self._driver.find_elements(*i)
            for i in range(len(element)):
                element[i].click()
            return self.find(locator,value)

改成这样应该就能遍历完了

因为前面写了for i in self._black_list 所以每次只会检查黑名单里的一项 用find_elements只是为了在没找到的时候不会报错 所以正常情况的话这个结果只会是0个(黑名单里这一项没有命中)或者1个(黑名单里这项命中了) 所以用if判断一下有命中的话就点击就可以了

这是递归函数,所以不需要去遍历每个找到的黑名单里控件列表。下次递归的时候会自动再找到并点击的。你估计是忽略了递归的用法。正是有递归,所以就可以不用写循环了。

再一个原因是使用find elements也是为了避免再抛异常,多数情况下命中的控件数量是0到1,再加有递归,所以就可以省去找循环写法。