背景:对webdriver元素查找方法进行封装(find方法),刚开始没有加入等待,运行时出现元素未加载出来,然后未找到元素就报错了… 就想着在find方法加入显示等待来解决这个问题,但是加入显示等待之后,运行就一直报错
代码:
def find(self, locator) -> WebElement:
#todo:查找元素时增加对弹窗的处理,及异常处理
try:
return self.driver.find_element(*locator)
except Exception as e :
if BasePage.max > 3:
raise e
BasePage.max +=1
# black_list1 = tuple(self.black_list)
for black in self.black_list:
# sleep(3)
WebDriverWait(self.driver, 60).until(expected_conditions.visibility_of_element_located(*black))
elements = self.driver.find_elements(*black)
if len(elements) >= 1:
elements[0].click()
return self.find(locator)
报错代码:WebDriverWait(self.driver, 60).until(expected_conditions.visibility_of_element_located(*black))
报错原因分析:visibility_of_element_located类的构造方法只有两个参数,但调用时传入一个元组,被识别成输入了三个参数(有一个参数是self,方法将我传入的元组,识别成两个参数了),然后就报错了…
针对上述元素未加载成功,查找失败的问题,目前解决方法是在元素查找前加了sleep等待
本人是菜鸟,不知怎么解,还请各位大佬支支招…