nid*_*ids 6 python webdriver nosetests webpage-screenshot selenium-webdriver
我用nosetests运行selenium webdriver测试.我想在鼻子测试失败时捕获屏幕截图.如何通过使用webdriver,python或nosetests功能以最有效的方式完成?
我的解决方案
import sys, unittest
from datetime import datetime
class TestCase(unittest.TestCase):
def setUp(self):
some_code
def test_case(self):
blah-blah-blah
def tearDown(self):
if sys.exc_info()[0]: # Returns the info of exception being handled
fail_url = self.driver.current_url
print fail_url
now = datetime.now().strftime('%Y-%m-%d_%H-%M-%S-%f')
self.driver.get_screenshot_as_file('/path/to/file/%s.png' % now) # my tests work in parallel, so I need uniqe file names
fail_screenshot_url = 'http://debugtool/screenshots/%s.png' % now
print fail_screenshot_url
self.driver.quit()
Run Code Online (Sandbox Code Playgroud)
首先,webdriver有以下命令:
driver.get_screenshot_as_file(screenshot_file_path)
Run Code Online (Sandbox Code Playgroud)
我不是鼻子专家(实际上这是我第一次看到它),但是我使用py.test框架(类似,但优于nose恕我直言).
很可能你必须为nose 创建"插件",你必须实现addFailure(test, err)"当测试失败时调用" 的钩子.
在此,addFailure(test, err)您可以从Test对象获取测试名称并生成文件的路径.
那个电话之后driver.get_screenshot_as_file(screenshot_file_path).
在py.test我创建我的插件与def pytest_runtest_makereport(item, call):钩子的实现.在内部我分析call.excinfo并创建必要的屏幕截图.
在Python中你可以使用下面的代码:
driver.save_screenshot('/file/screenshot.png')
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3932 次 |
| 最近记录: |