# -*- 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# -*- coding:utf-8 -*-
# explain : 等待元素的操作