首页 > 编程语言 >Python使用sys.excepthook统一处理异常,并将异常信息记录到日志中

Python使用sys.excepthook统一处理异常,并将异常信息记录到日志中

时间:2023-11-24 09:22:06浏览次数:36  
标签:__ Xpath Python self driver sys import logger 异常

import sys
import time
import traceback
from datetime import datetime
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.support.ui import WebDriverWait
from logs import logger


class Data:

    def __init__(self):
        self.driver = webdriver.Firefox()
        logger.info('__init__')
        sys.excepthook = self.HandleException

    def __Sendkeys__(self, Xpath, keys):
        WebDriverWait(self.driver, 2).until(EC.presence_of_element_located((By.XPATH, Xpath)))  # 显示等待      
        self.driver.find_element_by_xpath(Xpath).send_keys(keys)        
            
    def __Click__(self, Xpath):
        WebDriverWait(self.driver, 2).until(EC.presence_of_element_located((By.XPATH, Xpath)))  # 显示等待
        self.driver.find_element_by_xpath(Xpath).click()

    def Run(self):
        self.driver.get("http://localhost:8080/login/")  
        time.sleep(0.5)  # 强制等待看页面显示结果
        self.__Sendkeys__("//input[@id='user']", "username")
        self.__Sendkeys__("//input[@id='psw']", "password")
        self.__Click__("//*[@id='btn']")
        logger.info('操作成功')
        time.sleep(0.5)
        self.driver.quit()

    def HandleException(self, excType, excValue, tb):
        currentTime = datetime.now() # 时间戳
        logger.info('Timestamp: %s' % (currentTime.strftime("%Y-%m-%d %H:%M:%S")))

        ErrorMessage = traceback.format_exception(excType, excValue, tb)  # 异常信息
        logger.error('ErrorMessage: %s' % ErrorMessage)  # 将异常信息记录到日志中

        logger.error('sys.excepthook: %s' % sys.excepthook)
        logger.error('excType: %s' % excType)
        logger.error('excValue: %s' % str(excValue))
        logger.error('tb: %s' % tb)


if __name__ == "__main__":
    dt = Data()
    dt.Run()

 

标签:__,Xpath,Python,self,driver,sys,import,logger,异常
From: https://www.cnblogs.com/Im-Victor/p/17852976.html

相关文章

  • 【接口自动化测试实战】python+requests+Pytest+yaml+Allure
    前言一、先来了解下pytest二、需要具备的基础知识三、开发环境准备四、接口自动化实战(设计项目目录)五、方法封装六、编写自动化用例脚本七、持续集成八、其他自动化框架......
  • 直接讲清楚反转链表和判断子链表是怎么搞的【python】
    Reversed_sub反向子链表题,直接把反向链表和子链表讲清楚。反向假设有一个链表:1->2->3->4->None初始化三个指针:prev:用于指向当前节点的前一个节点。初始时prev为None。current:用于指向当前节点。初始时current指向链表的头节点。next:用于保存当前节点的下一......
  • python编程模拟题二
    重要提示:如下四个题都很类似,从简到难不等,请注意:尽管要求输入数字,但如果数字本身在题目中不需要参与计算,那么可以直接把这个数字当字符串来处理即可。如果数字参与计算了,可以把每个数字通过 eval()或 int()转换即可。这四个题目考察大家输入,输出,循环,字符串里每个字符的索引......
  • 简单的用Python采集股票数据,保存表格后分析历史数据
    前言字节跳动如果上市,那么钟老板将成为我国第一个世界首富趁着现在还没上市,咱们提前学习一下用Python分析股票历史数据,抱住粗大腿坐等起飞~好了话不多说,我们直接开始正文准备工作环境使用Python3.10解释器Pycharm编辑器模块使用requests—>数据......
  • pythonChap3变量与函数
    变量与操作变量用=赋值新的值会覆盖掉旧的值新值的数据类型不一定要与旧的相等变量命名规则:必须以字母或下划线(_)开头命名可由字母、数字和下划线组成大小写敏感尽量避免使用保留字命名保留字:['False','None','True','peg_parser','and','as','assert','async......
  • Delphi获取当前系统时间(使用API函数GetSystemTime)
    在开发应用程序时往往需要获取当前系统时间。尽管Y2K似乎已经平安过去,但在我们新开发的应用程序中还是要谨慎处理“时间”问题。在《融会贯通--Delphi4.0实战技巧》(以下简称“该书”)第89页专门介绍了两种获取当前系统时间的方法,但这两种方法都存在不足或错误,以下就此进行讨......
  • 聪明办法学python chap2数据类型与操作 3变量与函数
    Python(二)数据类型与操作类型print(type(2))#整型intprint(type(2.2))#浮点型floatprint(type(2>3.4))#布尔型boolprint(type(type(2)))#类型typeprint(t......
  • Python中的构造方法
     构造方法在Python中的使用:创建对象时用于初始化对象的实例变量。通过__init__()来定义1、什么是构造方法在面向对象编程中,构造方法是一个特殊的方法,用于在创建对象时初始化对象的状态。它在对象创建的过程中自动调用,负责为对象设置初始值。构造方法通常用于执行与对象相关的......
  • Python中,if __name__=="__main__"学习
    注意:Python的代码执行,都是依次从上往下执行在Python中,每个模块都有一个内置的变量name,用于表示当前模块的名称。当一个Python文件被执行时,Python解释器会首先将该文件作为一个模块导入,并执行其中的代码。此时,__name__的值为模块的名称。ifname==‘main’是一个常见的用法,它......
  • 代码随想训练营第三十九天(Python)| 62.不同路径、63. 不同路径 II、343. 整数拆分
    62.不同路径classSolution:defuniquePaths(self,m:int,n:int)->int:#dp[i][j]代表到达dp[i][j]有多少不同路径dp=[[0]*nfor_inrange(m)]#初始化foriinrange(m):dp[i][0]=1forjinra......