等待元素消失的方法

# -*- 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。后续的类似方法以后补充

猜你喜欢

转载自blog.51cto.com/11463754/2482579