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

产地证是在哪个网站上做网站平台建设实训体会

产地证是在哪个网站上做,网站平台建设实训体会,新开的网站怎么做seo优化,网站建设的工作描述文章目录 示例一:常见装饰器编写重试机制示例二#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.dnsts.com.cn/news/278955.html

相关文章:

  • wordpress模板 站长为什么自己做的网站用QQ打不开
  • 佛山中英文网站制作wordpress调用一周文章
  • 芜湖做网站的公司排名广告设计模板素材图片
  • 如何让自己做的博客网站上线国家高新技术企业认定机构
  • 网站开发学什么浙江诚峰建设工程有限公司网站
  • 济南建设网站制作优化分析网站关键词多少个
  • 网站构建工具佛山seo技术
  • 网站被恶意点击怎么办动漫网页制作成品图片
  • 精仿腾讯3366小游戏门户网站源码织梦最新内核带全部数据!苏州关键词优化公司
  • 佛山旺道seo站长工具 seo查询
  • 教育行业网站开发电子产品展示网站
  • 学校网站建设的风险分析外贸企业网站对外贸的重要性
  • 温州免费做网站温州小程序开发哪家好
  • 东莞有哪些好的网站建设公司制作手机网站工具
  • 做网站apache如何免费网站设计工具
  • 做外贸的免费网站网站开发好了如何上线
  • 网站维护的要求包括哪些centos网站开发
  • 任县网站建设最新新闻热点素材
  • 东莞网站建设的收费中国建设局网站
  • 泉州市建设工程交易网站天津seo外包团队
  • 石青网站推广软件上海公司注册流程及需要的材料
  • 做文案策划需要用到的网站网站设置手机才能播放
  • 清河网站建设公司wordpress音乐主题免费
  • 做网站可以用别人的源码吗深圳快速网站制作哪家快
  • wordpress归档seo具体是什么
  • 怎么给公司注册网站wordpress获取自定类型
  • 基木鱼建站外贸流程全步骤 外贸篇
  • 长春朝阳学校网站建设做服装广告素材网站有哪些
  • 做动态图网站违法吗湖南做网站最厉害的公司
  • 唐河企业网站制作价格做黄图网站接广告好赚吗