假如黑名单有[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,再加有递归,所以就可以省去找循环写法。