def clears(self, locator: Enum,index:int,timeout=TIMEOUT) -> None: """ 清除操作 :param locator: 元素定位表达式 :return: None """ eles = self.find_elements(locator=locator) if eles: eles[index].clear() logger.info('清除元素:{}, 元素描述:{}'.format(locator.value, locator)) else: logger.error('清除失败,开始截图') self.save_screenshot() raise Exception("元素不可清除")如何添加等待元素出现后再清除
时间: 2024-02-14 07:04:31 浏览: 155
可以使用 Selenium 中的 `WebDriverWait` 方法来等待元素出现后再进行清除操作。具体来说,可以在 `find_elements` 方法中添加一个等待逻辑,例如:
```
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
def find_elements(self, locator: Enum, timeout=TIMEOUT):
"""
查找元素
:param locator: 元素定位表达式
:return: WebElement对象列表
"""
try:
element_present = EC.presence_of_element_located((locator.type, locator.value))
WebDriverWait(self.driver, timeout).until(element_present)
return self.driver.find_elements(locator.type, locator.value)
except TimeoutException:
logger.error('定位元素超时,开始截图')
self.save_screenshot()
raise Exception("定位元素超时")
```
这里使用 `EC.presence_of_element_located` 方法来创建一个判断元素是否存在的条件,然后在 `WebDriverWait` 方法中使用该条件进行等待。如果元素在指定的时间内出现,则会返回元素列表;否则会抛出 `TimeoutException` 异常。接下来,在 `clears` 方法中调用 `find_elements` 方法时,就会等待元素出现后再继续进行清除操作。如果元素在超时时间内仍然没有出现,则会抛出异常并截图保存。
阅读全文