等待元素消失的方法

# -*- 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。後續的類似方法以後補充

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章