当前位置: 首页 > news >正文

服装网站建设都有哪些住房城乡建设部网站诚信

服装网站建设都有哪些,住房城乡建设部网站诚信,网站做404是什么意思,营销推广包括几个方面文章目录 示例一:常见装饰器编写重试机制示例二#xff1a;使用类实现装饰器示例三#xff1a;使用函数装饰器并返回闭包示例四#xff1a;使用 wrapt 模块 示例一:常见装饰器编写重试机制 示例代码 import time import traceback import logging from typing import Call… 文章目录 示例一:常见装饰器编写重试机制示例二使用类实现装饰器示例三使用函数装饰器并返回闭包示例四使用 wrapt 模块 示例一:常见装饰器编写重试机制 示例代码 import time import traceback import logging from typing import Callable from selenium import webdriver from selenium.webdriver.common.by import By from selenium.common.exceptions import NoSuchElementException, WebDriverException, TimeoutException from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC# 设置日志配置 logging.basicConfig(levellogging.ERROR) logger logging.getLogger(__name__)# 假设 DOME 是一个配置字典用于控制 DEBUG 模式 DOME {DEBUG: False,debug: False }def exr_func(*args, **kwargs):# 在每次重试前执行的操作可以在此添加刷新页面等逻辑driver kwargs.get(driver)if driver:driver.refresh()time.sleep(2) # 等待页面刷新完成def dec_retry(num1, exr: Callable lambda *_, **__: None, catchException, excludeException, out_errorTrue):装饰器重复执行func并忽略异常超过次数抛出异常或返回空此函数默认输出异常信息def decorator(func):def dec(*args, **kwargs):for i in range(1, num 1):try:return func(*args, **kwargs)except exclude as err:raise errexcept catch as err:logger.error(f第 {i} 次执行失败)if out_error:logger.error(err, traceback.format_exc(), sep\n)if DOME.get(DEBUG) or DOME.get(debug):logger.error(已开启 DEBUG 模式直接抛出异常)raise errif i num:logger.error(f已执行 {num} 次抛出异常)raise errlogger.error(开始重试)exr(*args, **kwargs)return decreturn decoratordec_retry(num3, exrexr_func, catch(NoSuchElementException, WebDriverException, TimeoutException)) def login(driver, username, password):# 访问登录页面driver.get(https://example.com/login)# 等待页面加载完成WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.ID, username)))# 输入用户名username_field driver.find_element(By.ID, username)username_field.send_keys(username)# 输入密码password_field driver.find_element(By.ID, password)password_field.send_keys(password)# 点击登录按钮login_button driver.find_element(By.ID, loginButton)login_button.click()# 等待页面加载完成并检查是否登录成功WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.ID, logoutButton)))print(登录成功)return Truedef main():# 设置WebDriverdriver webdriver.Chrome()username your_usernamepassword your_passwordtry:login(driver, username, password, driverdriver)except Exception as e:logger.error(f最终登录失败异常: {e})driver.quit()if __name__ __main__:main()代码解释 日志配置: 设置日志记录配置用于输出错误信息。exr_func 函数: 定义了在每次重试前执行的操作例如刷新页面。dec_retry 装饰器: 实现了重试机制捕获指定异常在重试次数用尽前会执行 exr_func 函数。login 函数: 实现具体的登录操作并被 dec_retry 装饰器装饰。main 函数: 设置 WebDriver尝试登录并在失败时输出日志信息。 示例二使用类实现装饰器 类装饰器可以更灵活地管理状态并且可以更好地组织复杂的逻辑。 import time import traceback import logging from typing import Callable from selenium import webdriver from selenium.webdriver.common.by import By from selenium.common.exceptions import NoSuchElementException, WebDriverException, TimeoutException from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC# 设置日志配置 logging.basicConfig(levellogging.ERROR) logger logging.getLogger(__name__)# 假设 DOME 是一个配置字典用于控制 DEBUG 模式 DOME {DEBUG: False,debug: False }def exr_func(*args, **kwargs):driver kwargs.get(driver)if driver:driver.refresh()time.sleep(2) # 等待页面刷新完成class RetryDecorator:def __init__(self, num1, exr: Callable lambda *_, **__: None, catchException, excludeException, out_errorTrue):self.num numself.exr exrself.catch catchself.exclude excludeself.out_error out_errordef __call__(self, func):def wrapped_func(*args, **kwargs):for i in range(1, self.num 1):try:return func(*args, **kwargs)except self.exclude as err:raise errexcept self.catch as err:logger.error(f第 {i} 次执行失败)if self.out_error:logger.error(err, traceback.format_exc(), sep\n)if DOME.get(DEBUG) or DOME.get(debug):logger.error(已开启 DEBUG 模式直接抛出异常)raise errif i self.num:logger.error(f已执行 {self.num} 次抛出异常)raise errlogger.error(开始重试)self.exr(*args, **kwargs)return wrapped_funcRetryDecorator(num3, exrexr_func, catch(NoSuchElementException, WebDriverException, TimeoutException)) def login(driver, username, password):driver.get(https://example.com/login)WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.ID, username)))username_field driver.find_element(By.ID, username)username_field.send_keys(username)password_field driver.find_element(By.ID, password)password_field.send_keys(password)login_button driver.find_element(By.ID, loginButton)login_button.click()WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.ID, logoutButton)))print(登录成功)return Truedef main():driver webdriver.Chrome()username your_usernamepassword your_passwordtry:login(driver, username, password, driverdriver)except Exception as e:logger.error(f最终登录失败异常: {e})driver.quit()if __name__ __main__:main()示例三使用函数装饰器并返回闭包 使用闭包使代码更简洁。 import time import traceback import logging from typing import Callable from selenium import webdriver from selenium.webdriver.common.by import By from selenium.common.exceptions import NoSuchElementException, WebDriverException, TimeoutException from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EClogging.basicConfig(levellogging.ERROR) logger logging.getLogger(__name__)DOME {DEBUG: False,debug: False }def exr_func(*args, **kwargs):driver kwargs.get(driver)if driver:driver.refresh()time.sleep(2)def dec_retry(num1, exr: Callable lambda *_, **__: None, catchException, excludeException, out_errorTrue):def decorator(func):def wrapped_func(*args, **kwargs):for i in range(1, num 1):try:return func(*args, **kwargs)except exclude as err:raise errexcept catch as err:logger.error(f第 {i} 次执行失败)if out_error:logger.error(err, traceback.format_exc(), sep\n)if DOME.get(DEBUG) or DOME.get(debug):logger.error(已开启 DEBUG 模式直接抛出异常)raise errif i num:logger.error(f已执行 {num} 次抛出异常)raise errlogger.error(开始重试)exr(*args, **kwargs)return wrapped_funcreturn decoratordec_retry(num3, exrexr_func, catch(NoSuchElementException, WebDriverException, TimeoutException)) def login(driver, username, password):driver.get(https://example.com/login)WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.ID, username)))username_field driver.find_element(By.ID, username)username_field.send_keys(username)password_field driver.find_element(By.ID, password)password_field.send_keys(password)login_button driver.find_element(By.ID, loginButton)login_button.click()WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.ID, logoutButton)))print(登录成功)return Truedef main():driver webdriver.Chrome()username your_usernamepassword your_passwordtry:login(driver, username, password, driverdriver)except Exception as e:logger.error(f最终登录失败异常: {e})driver.quit()if __name__ __main__:main()示例四使用 wrapt 模块 wrapt 是一个强大的装饰器库可以更轻松地编写装饰器特别是处理复杂逻辑时。 import time import traceback import logging import wrapt from typing import Callable from selenium import webdriver from selenium.webdriver.common.by import By from selenium.common.exceptions import NoSuchElementException, WebDriverException, TimeoutException from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EClogging.basicConfig(levellogging.ERROR) logger logging.getLogger(__name__)DOME {DEBUG: False,debug: False }def exr_func(*args, **kwargs):driver kwargs.get(driver)if driver:driver.refresh()time.sleep(2)def dec_retry(num1, exr: Callable lambda *_, **__: None, catchException, excludeException, out_errorTrue):wrapt.decoratordef wrapper(wrapped, instance, args, kwargs):for i in range(1, num 1):try:return wrapped(*args, **kwargs)except exclude as err:raise errexcept catch as err:logger.error(f第 {i} 次执行失败)if out_error:logger.error(err, traceback.format_exc(), sep\n)if DOME.get(DEBUG) or DOME.get(debug):logger.error(已开启 DEBUG 模式直接抛出异常)raise errif i num:logger.error(f已执行 {num} 次抛出异常)raise errlogger.error(开始重试)exr(*args, **kwargs)return wrapperdec_retry(num3, exrexr_func, catch(NoSuchElementException, WebDriverException, TimeoutException)) def login(driver, username, password):driver.get(https://example.com/login)WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.ID, username)))username_field driver.find_element(By.ID, username)username_field.send_keys(username)password_field driver.find_element(By.ID, password)password_field.send_keys(password)login_button driver.find_element(By.ID, loginButton)login_button.click()WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.ID, logoutButton)))print(登录成功)return Truedef main():driver webdriver.Chrome()username your_usernamepassword your_passwordtry:login(driver, username, password, driverdriver)except Exception as e:logger.error(f最终登录失败异常: {e})driver.quit()if __name__ __main__:main()
http://www.hkea.cn/news/14490919/

相关文章:

  • 公司网站注册流程和费用临沂手机网站建设
  • 电子商务网站建设人才调研东莞公司网站开发
  • 湖南网站建设工作室网站目录怎么做301跳转
  • 装修网站合作平台有哪些深圳绿色建筑信息平台
  • 网站开发雷小天基本型电商网站举例
  • 网站txt地图怎么做重庆观音桥
  • 泸溪县建设局网站wordpress手机端编辑
  • 成都龙泉建设网站北京网站建设大概多少钱
  • 网站备案号省份百度站长如何验证网站
  • 网站错误模板设计公司企业文化
  • 怎么做可以直播的网站空间类网站价格
  • 目前做网站WordPress推送服务
  • 成都高新区建设局网站wordpress 浮动插件
  • wordpress 适合外贸站客户关系管理案例经典
  • 建设的访问网站需要密码wordpress投稿验证码
  • 网站空间付款方式logo免费设计在线生成免费下载
  • 长沙网站维护公司公司网站制作需要什么步骤
  • 17zwd一起做网站网站建设如果没有源代码
  • 网站建设简历模板松江信息科技有限公司网站
  • 网站风格确定云南外贸建站推广
  • 做美股的数据网站免费咨询服务合同范本免费版
  • 做响应式网站费用网络推广加盟项目
  • 上海网站营销是什么云电脑免费体验
  • 西湖区建设局网站新手什么网站做外贸
  • 国企网站的建设wordpress 主题 academy
  • 山西建设厅网站查不了万江区仿做网站
  • 河南省建设局网站首页东至网站制作
  • 网站后台登陆破解潜江资讯网58同城
  • 网站建设 财务归类wordpress 调取缩略图
  • 和京东一样做电子产品的网站成都企业建站模板