# -*- coding:utf-8 -*- # explain : 等待元素的操作 from selenium.webdriver.remote.webdriver import WebDriver from selenium.webdriver.remote.webelement import WebElement from selenium.webdriver.support import expected_conditions as EC from selenium.webdriver.support.wait import WebDriverWait from selenium.common.exceptions import TimeoutException from com.chanpin.initialize.Start import Primary class WaitWebElement: """ 等待元素是否出现、消失,用于返回true或false waitelementdisplay(self, driver: WebDriver, element: WebElement) -> bool 等待元素消失 """ def __init__(self): self.__time = Primary.readini.getvalue("webdriver", "implicit_waitTime") # 等待超时的时间 def waitelementdisplay(self, driver: WebDriver, element: WebElement) -> bool: """ 等待element元素消失,成功消失返回True,否则返回False :param driver: selenium.webdriver.remote.webdriver.WebDriver :param element: selenium.webdriver.remote.webelement.WebElement :return: bool 当元素成功消失返回True,元素未消失返回False """ inti = 0 while inti <= 3: # 当元素消失的时候返回True,进行下一步操作 try: WebDriverWait(driver, timeout=int(self.__time)).until(EC.invisibility_of_element(element)) boolean = True except TimeoutException: boolean = False if boolean: Primary.Log.info("该元素已经消失") break else: Primary.Log.warning("该元素还未消失") inti += 1 if inti > 3: Primary.Log.error("3次判断后该元素还未消失" + element.__str__()) return False else: return True
说明:通过循环等待利用expected_conditions模块等待元素消失,如果元素消失后就返回True,否则就返回False。后续的类似方法以后补充