# -*- 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。后续的相似方法之后补充
python