如何使用Playwright及timeout参数检查元素是否存在
解决Playwright查找元素返回布尔值的问题
原代码里wait_for_selector在元素不存在时会抛出超时异常,要实现返回布尔值的逻辑,用try-except块捕获异常即可,同时保留timeout参数控制等待时长:
基础版:仅判断元素是否存在
def is_element_exists(self, selector, timeout=7000): try: # 等待元素出现,超时时间由timeout参数指定 self.page.wait_for_selector(selector, timeout=timeout) return True except: # 捕获超时或元素未找到的异常,返回False return False
进阶版:同时返回存在状态和元素文本
如果需要在元素存在时获取它的文本,可调整函数返回元组:
def check_element(self, selector, timeout=7000): try: element = self.page.wait_for_selector(selector, timeout=timeout) return (True, element.inner_text()) except: return (False, None)
精确异常捕获(可选)
如果不想捕获所有异常,仅针对Playwright的超时错误,可以先导入对应的异常类,再精准捕获:
from playwright._impl._errors import TimeoutError def is_element_exists(self, selector, timeout=7000): try: self.page.wait_for_selector(selector, timeout=timeout) return True except TimeoutError: return False
内容的提问来源于stack exchange,提问作者Tal Angel
相关产品推荐
相关产品推荐

