# -*- 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