在Python上捕获并打印警告消息> Selenium Webdriver

时间:2015-08-18 21:18:54

标签: python selenium selenium-webdriver webdriver

我正在尝试捕获警告消息,打印警告消息,然后退出带有传递状态的测试用例。在测试用例中,我有以下代码:

testcase.py:

try:
    warnings.filterwarnings('error')
    activeConfig(driver, url, None, None, True).confirmConfigSet()
except Warning as e:
    print e.message
    return

由于我能够毫无问题地发出警告,我只会显示实际发现的警告:

code-where-warning-is-caught.py:
    .
    .
    .
    except (Exception, NoSuchElementException, TimeoutException):
        global_vars.attemptedToEnableDatabase = True
        warnings.warn("\nWARNING : DATABASE PACKAGES HAVE NOT BEEN INSTALLED SO THE DATABASE CANNOT BE ENABLED.", UserWarning)
        return

我可以很好地捕获警告,但我一直收到以下错误:

E           DeprecationWarning: BaseException.message has been deprecated as of
Python 2.6

如果我删除测试用例代码的'e'部分,看起来像......

try:
    warnings.filterwarnings('error')
    activeConfig(driver, url, None, None, True).confirmConfigSet()
except Warning:
    return

...测试用例完全按照我想要的方式运行,除了它不打印警告消息。如何捕获异常,打印警告消息,并以通过状态退出测试用例?我也对更有经验的编码员可能提出的任何改进想法持开放态度。

1 个答案:

答案 0 :(得分:0)

请在这里阅读。他们解释了一切,你可以尝试一下。

https://docs.python.org/2/library/traceback.html

在我最近的项目中,我设法通过执行此操作将仅有关键的消息写入文本文件,

logging.basicConfig(level=logging.CRITICAL,
                    format = '%(asctime)s %(name)-12s %(levelname)-8s %(message)s', 
                    datefmt = '%m-%d %H:%M',
                    filename = self.testResultRecord,
                    filemode = 'w')
下面的

行是我的个人格式配置,与日志级别无关。

format = '%(asctime)s %(name)-12s %(levelname)-8s %(message)s', 
datefmt = '%m-%d %H:%M',

此致