1. from selenium import webdriver
    import unittest
    import time
  2.  
  3. class Blog(unittest.TestCase):
    """登录博客园"""
  4.  
  5. # 添加@classmethod装饰器,只打开浏览器一次
    @classmethod
    def setUpClass(cls):
    """初始化"""
    cls.browser = webdriver.Chrome()
    cls.url = 'https://passport.cnblogs.com/user/signin'
    cls.browser.get(cls.url)
    cls.browser.implicitly_wait(30)
    cls.browser.maximize_window()
  6.  
  7. def login(self, username, password):
    """登录帐号密码参数化"""
    self.browser.find_element_by_id('input1').send_keys(username)
    self.browser.find_element_by_id('input2').send_keys(password)
    self.browser.find_element_by_id('signin').click()
    time.sleep(3)
  8.  
  9. def is_login_sucess(self):
    """判断是否获取登录后账户名称"""
    time.sleep(2)
    try:
    text = self.browser.find_element_by_id('lnk_current_user').text
    print(text)
    return True
    except:
    return False
  10.  
  11. def back_out(self):
    # 退出返回登录页面
    time.sleep(2)
    self.browser.find_element_by_xpath('//*[@id="header_user_right"]/a[5]').click()
    time.sleep(2)
    # alert方法去掉退出弹框
    s = self.browser.switch_to_alert()
    s.accept()
    time.sleep(2)
    self.browser.find_element_by_xpath('//*[@id="header_user_left"]/a[1]').click()
    time.sleep(2)
  12.  
  13. def clear_box(self):
    """清空输入框"""
    self.browser.find_element_by_id('input1').clear()
    self.browser.find_element_by_id('input2').clear()
    time.sleep(1)
  14.  
  15. def test_01(self):
    """调用login函数登录"""
    self.login('uesrname', 'password')
    result = self.is_login_sucess()
    self.assertTrue(result)
  16.  
  17. def test_02(self):
    """错误的示范"""
    self.back_out()
    self.clear_box()
    self.login('1', '2')
    result = self.is_login_sucess()
    self.assertTrue(result, msg='失败了呀,没有获取登录后的账户名称呢!')
  18.  
  19. @classmethod
    def tearDownClass(cls):
    cls.browser.quit()
  20.  
  21. if __name__ == '__main__':
    """生成html报告"""
    import HTMLTestRunner
    # now = time.s
    now = time.strftime('%Y-%m-%d %H-%M-%S')
    report_title = '博客园登录自动化测试'
    # report_path = r'D:\PythonProject\com\report.html'
    report_path = 'D:\\PythonProject\\com\\'+ now + 'report.html'
    explain = '博客园登录测试报告'
  22.  
  23. test_suite = unittest.TestSuite()
    test_suite.addTest(Blog('test_01'))
    test_suite.addTest(Blog('test_02'))
  24.  
  25. with open(report_path, 'wb') as fp:
    runner = HTMLTestRunner.HTMLTestRunner(title=report_title, stream=fp, description=explain)
    runner.run(test_suite)
    fp.close()

只打开一次浏览器,生成html测试报告<小紧张中......>的更多相关文章

  1. 生成HTML测试报告

    HTMLTestRunner是Python标准库unittest单元测试框架的一个扩展,可以生成易于使用的HTML测试报告,这个扩展很简单,只有一个HTMLTestRunner.py,下载地址:htt ...

  2. Python用HTMLTestRunner生成html测试报告

    小编的主机:mac 一.引入HTMLTestRunner包 1.下载HTMLTestRunner.py,已上传到网盘,点击下载 2.将HTMLTestRunner.py复制到python安装目录的Li ...

  3. [疑难杂症]__点击win10屏幕最上方的边界会莫名其妙打开Internet Explorer浏览器,不胜其烦(2次ps:已解决!!!).

    关于问题描述: 每次误点到屏幕上边界会莫名打卡Internet Explorer浏览器(一开始开以为是自带的Edge浏览器,后来在查找相关解决方法的时候才发现并不是同一款浏览器) 这个问题存在好久了, ...

  4. 转 生成 HTMLTestRunner 测试报告

    转自:http://www.cnblogs.com/hero-blog/p/4128575.html 04.生成 HTMLTestRunner  测试报告   1.HTMLTestRunner 是 P ...

  5. Python+Selenium----使用HTMLTestRunner.py生成自动化测试报告2(使用PyCharm )

    1.说明 在我前一篇文件(Python+Selenium----使用HTMLTestRunner.py生成自动化测试报告1(使用IDLE ))中简单的写明了,如何生产测试报告,但是使用IDLE很麻烦, ...

  6. Python+Selenium----使用HTMLTestRunner.py生成自动化测试报告1(使用IDLE)

    1.说明 自动化测试报告是一个很重要的测试数据,网上看了一下,使用HTMLTestRunner.py生成自动化测试报告使用的比较多,但是呢,小白刚刚入手,不太懂,看了很多博客,终于生成了一个测试报告, ...

  7. Appium+Python之生成html测试报告

    思考:测试用例执行后,如何生成一个直观漂亮的测试报告呢? 分析:1.unittest单元测试框架本身带有一个textTestRunner类,可以生成txt文本格式的测试报告,但是页面不够直观 2.我们 ...

  8. web自动化多次打开浏览器嫌烦?打开一次浏览器,pytest有个招

    最近系统前端组件做了更新,我就把之前做的web自动化的代码做了一些修改,顺便优化了下用例,只保留少量的测试用例了,大头还是在接口自动化上.然后发现关于pytest的还有一个点应该比较常用,这里再介绍一 ...

  9. Pytest单元测试框架生成HTML测试报告及优化

    一.安装插件 要生成html类型的报告,需要使用pytest-html插件,可以在IDE中安装,也可以在命令行中安装.插件安装 的位置涉及到不同项目的使用,这里不再详述,想了解的可自行查询. IDE中 ...

随机推荐

  1. Java中Collections类的排序sort函数两种用法

    java中的Colletions类主要实现列表List的排序功能.根据函数参数的传递,具体的排序可以分为 : 1.  自然排序(natural ordering). 函数原型:sort(List< ...

  2. C++中为何大量使用类指针

    C++的精髓之一就是多态性,只有指针或者引用可以达到多态.对象不行类指针的优点: 第一实现多态. 第二,在函数调用,传指针参数.不管你的对象或结构参数多么庞大,你用指针,传过去的就是4个字节.如果用对 ...

  3. mac上mysql root密码忘记或权限错误的解决办法

    以下方法亲测有效,过程使用的工具只有mac的终端无需workbench 当我们通过终端连接mysql数据库时候我们会看到这样的信息 ERROR 1045: Access denied for user ...

  4. HTTP协议和WEB框架

    一.HTTP协议 <<HTTP权威指南>>读书笔记:https://www.cnblogs.com/qcssmd/p/5508150.html 一.HTTP简介 HTTP协议是 ...

  5. 《Java程序设计》第一周学习记录(2)

    目录 使用JDB调试程序 系统文件被覆盖的挽救 参考资料 使用JDB调试程序 JDB是JDK自带的基于命令行的调试程序.我们先来man一下吧(说到这里,我之前在翻娄老师的博客的时候看到一篇文章:做中学 ...

  6. malloc调用后经历了什么?

    进程生成虚拟地址空间,有堆地址,由于是虚拟地址,所以没有做内存碎片化处理,只是在虚拟内存不够的时候调用brk,进行堆大小的调整,然后申请到虚拟内存是页,同MMU映射到物理地址,然后并不是每个页都预先加 ...

  7. 如何用html把文本框外观格式设为只显示底部的横线

    html把文本框外观格式设为只显示底部的横线 <style> input[type='text']{background:none;border:none;border-bottom:1p ...

  8. MFC CEdit控件 自动换行

    属性设置: Auto HScroll : False Auto VScroll : True Multiline        : Ture Want Return : Ture 亲自测试,值得信赖!

  9. ubuntu python 安装numpy,scipy.pandas.....

    http://blog.csdn.net/Yakumoyukarilan/article/details/51340358

  10. php 门面模式

    1.门面模式为外部提供一个统一的接口,外部调用者不用知道内部的具体复杂业务. 2.如果不使用门面模式,直接访问内部系统,会造成相互直接的耦合关系, 3.想让你的子系统开通哪些,就开通哪些,在门面上开通 ...