34-发生异常后进行截图(screenshot)

        测试用例在执行过程中是无人看守的,用例运行报错的时候,我们希望能对当前屏幕截图,留下证据。而在写测试用例的时候,最后一步是断言,可以把截图的动作放在断言之后,那么如何在断言失败后执行截图操作呢?

一、截图方法

# 获取当前Window的截图,出现IOError时候返回False,截图成功返回True
# filename参数是保存文件的路径。
# Usage: driver.get_screenshot_as_file('/Screenshots/foo.png')
get_screenshot_as_file(self, filename)

# 获取屏幕截图,保存的是base64的编码格式,在html测试报告中输出截图时会用到
# Usage: driver.get_screenshot_as_base64()
get_screenshot_as_base64(self)

# 获取屏幕截图,保存的是二进制数据,很少用到
# Usage: driver.get_screenshot_as_png()
get_screenshot_as_png(self)

二、使用 try...except 捕获异常后对当前屏幕截图

1)给截图命名时需要加上时间戳,避免同一个文件名称被覆盖掉。

2)如果要获取截图,需要填写截图文件的保存路径。

3)截图的结果,如果没截到图会返回False,截图成功会返回True。

import unittest
from selenium import webdriver
import os
import time

class Demo(unittest.TestCase):
    def setUp(self):
        self.driver = webdriver.Chrome()
        self.driver.get("https://www.baidu.com")

    def tear
### 关于Monkey工具异常截屏的解决方案 Monkey工具是Android开发中常用的自动化测试工具,用于生成随机事件流以测试应用程序的稳定性。如果在运行Monkey工具时出现异常,并希望获取截屏以定位问题,可以参考以下方法: #### 1. **启用ADB截屏功能** Android Debug Bridge (ADB) 提供了截屏功能,可以在Monkey工具运行过程中捕获设备屏幕。通过命令行执行以下操作即可完成截屏: ```bash adb shell screencap /sdcard/exception_screenshot.png ``` 随后,使用以下命令将截图从设备拉取到本地计算机: ```bash adb pull /sdcard/exception_screenshot.png <本地路径> ``` 这种方法适用于任何API级别,只要设备支持ADB连接[^5]。 #### 2. **结合Logcat日志分析异常** 在运行Monkey工具时,可以通过Logcat捕获详细的日志信息,从而定位异常原因。例如,启动Monkey工具的同时开启Logcat监听: ```bash adb logcat > logcat_output.txt ``` 当Monkey工具触发异常时,检查`logcat_output.txt`文件中的错误信息,并根据需要进行调试。此外,还可以设置过滤器以专注于特定的应用程序或包名: ```bash adb logcat | grep <包名> ``` #### 3. **自动截屏脚本** 如果需要在Monkey工具运行过程中自动截屏,可以编写一个简单的脚本来监控日志输出并触发截屏命令。以下是一个Python示例脚本: ```python import subprocess import time def capture_screenshot(): subprocess.run("adb shell screencap /sdcard/exception_screenshot.png", shell=True) subprocess.run("adb pull /sdcard/exception_screenshot.png ./screenshot.png", shell=True) def monitor_logcat(): process = subprocess.Popen(["adb", "logcat"], stdout=subprocess.PIPE, stderr=subprocess.PIPE, text=True) for line in process.stdout: if "CRASH" in line or "EXCEPTION" in line: # 根据关键词触发截屏 print("Exception detected! Capturing screenshot...") capture_screenshot() if __name__ == "__main__": monitor_logcat() ``` 此脚本会实时监控Logcat输出,并在检测到关键字(如“CRASH”或“EXCEPTION”)时自动截屏[^6]。 #### 4. **使用UI Automator辅助调试** 如果需要更复杂的用户界面测试,可以结合Android SDK中的UI Automator工具。UI Automator不仅能够创建用户界面测试,还能提供设备状态的快照和详细信息。需要注意的是,UI Automator仅支持API 16及以上的版本[^3]。 #### 5. **配置Monkey工具参数** 为了减少异常发生,可以在运行Monkey工具时调整相关参数。例如,限制事件类型、频率和范围: ```bash adb shell monkey -p <包名> --throttle 500 -v 500 ``` 参数说明: - `-p <包名>`:指定目标应用程序。 - `--throttle 500`:设置每个事件之间的延迟为500毫秒。 - `-v 500`:生成500个随机事件并输出详细日志。 ### 注意事项 - 确保设备已启用开发者选项和USB调试模式。 - 如果设备运行的是较新的Android版本,可能需要额外授权ADB访问权限。 - 对于某些特殊符号或复杂操作,可以参考LaTeX符号表以简化输入过程[^4]。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值