美文网首页
Selenium+Python web端自动化

Selenium+Python web端自动化

作者: 花开半夏fly | 来源:发表于2023-02-13 17:52 被阅读0次

    一、Selenium 简介

    1、Selenium:是一个Web应用程序测试的工具,支持多平台、多浏览器、多语言去实现自动化测试。目前在Web自动化领域应用越来越广泛
    2、Selemium工作原理:Selenium 主要用于Web端应用程序的自动化测试
    3、Selenium 的特点:

    • 开源、免费
    • 多浏览器支持:FireFox、Chrome、IE
    • 多语言支持:Java、Python、Ruby、JavaScript、C++
    • 对Web页面有良好的支持
    • 简单、灵活
    • 支持分布式测试用例执行

    二、环境配置

    1、下载软件Pycharm

    下载地址:https://www.jetbrains.com/pycharm/download/

    2、安装Python环境

    参考文档:https://www.jianshu.com/p/54baeae912fc

    查看pyhoth环境所在的位置:which python3.7

    3、安装pip

    命令行: sudo easy_install pip

    4、下载浏览器的驱动

    参考文档: https://www.jianshu.com/p/18d2a36f5a33

    Chrome的驱动对照表 (驱动版本和浏览器版本必须对应)

    驱动放在python所在的bin文件下:open /usr/local/bin


    Chrome的驱动对照表.png

    5、安装所需要的库或者SDK
    方式一: pip install selenium
    方式二:直接在pycharm-Project Interpreter里面进行安装


    方式一.png
    方式二.png

    三、Unittest 框架

    1、简介:Python语言下的单元测试框架,是Python语言自带的单元测试框架
    2、unittest中的4个重要概念:

    • TestCase:一个TestCase的实例就是一个测试用例;测试用例流程:包含测试前准备环境的搭建 setUp, 实现测试过程的代码run, 以及测试后环境的还原tearDown.
    • Test Sutie: Test Suite用来组装单个测试用例。可以通过addTest加载到TestCase到TestSuite中,从而返回一个TestSuite实例
    • Test Runner: 通过TextTestRunner 类提供的run()方法来执行 test sutie/test case.
    • Test Fixure:对一个测试用例环境的搭建和销毁,这个测试用例中需要访问数据库,可以在setUp()中通过建立数据库连接来进行初始化,在tearDown()中清除数据库产生的数据,然后关闭连接等。tearDown的过程很重要,要为下一个test case留下一个干净的环境
    class baseUnit(unittest.TestCase):
    
        @classmethod
        def setUpClass(cls) -> None:
            cls.driver = webdriver.Chrome('/usr/local/bin/chromedriver')
            cls.driver.maximize_window()
            cls.driver.implicitly_wait(10)
            cls.base_url = "https://XX.XX.com/login"
            cls.driver.title
    
        @classmethod
        def tearDownClass(cls) -> None:
            cls.driver.quit()
    

    四、元素定位的方法

    1、 http://note.youdao.com/s/TKEqaFcu

    1、id定位: driver.find_element_by_id("txtUaserName").send_keys("容音@lily")
    2、name定位:driver.find_element_by_name("username").send_keys("容音@lily")
    3、class定位:driver.find_element_by_class_name("")
    4、tag定位:driver.find_element_by_tag_name("input")
    5、link定位: driver.find_element_by_link_text("忘记密码").click()
    6、XPath定位:driver.find_element_by_xpath(“/html/body/div/div[2]/div[1]/div[3]/div/button").click()
    

    五、测试用例执行顺序和执行方法

    1、测试用例执行顺序:
    unittest框架默认根据ASCII码的顺序加载测试用例,数字与字母的顺序为:0-9,A~Z,a~z; 所以TestAdd类会优先于TestBdd类执行,test_aaa()方法会优先于test_ccc()被执行,因而它并没有按照用例从上到下执行
    2、测试用例的执行:
    unittest提供了可以共享的defaulTestLoader类,可以使用其子类和方法创建实例,discover()方法就是其中之一。

    test_dir = '/Users/XX/Desktop/Study/ui_test_admin/test_case'
    discover = unittest.defaultTestLoader.discover(test_dir, pattern=‘test*.py')
    if __name == ‘__main__’:
          runner = unittest.TextTestRunner()
          runner.run(discover)
    

    test_dir: 要测试的模块名或测试用例目录
    pattern:是用例的文件名

    六、HTML TestRunner 生成测试报告

    1、HTMLTestRunner 是Python标准库 unitest单元测试框架的一个扩展,它生成易于使用的HTML测试报告

    if __name__ == '__main__':
        #按照一定格式获取当前时间
        now = time.strftime("%Y-%m-%d %H-%M-%S")
        filename = now+'result.html'
        通过open()方法以二进制写模式打开当前目录下的result.html,如果没有,则自动创建该文件。
        fp = open(filename, 'wb')
        #定义测试报告:stream指定测试报告文件, title用于定义测试报告的标题,description用于         定义测试报告的副标题。
        runner = HTMLTestRunner(stream=fp, verbosity=2, title='Admin报告', description='用例执行情况:')
        # 运行项目组装的用例
        runner.run(discover)
        # 关闭报告文件
        fp.close()
    
    

    2、用例成功的测试报告


    用例成功.png

    3、用例失败的测试报告


    用例失败.png

    七、用例截图

    def insert_img(driver, file_name):
        pfilename = "/Users/XX/Desktop/Study/ui_test_admin/images"
        file_path = pfilename + "/" + file_name
        if Path(pfilename).is_dir():
            pass
        else:
            Path(pfilename).mkdir()
        driver.get_screenshot_as_file(file_path)
    if __name__ == '__main__':
        driver = webdriver.Chrome()
        driver.get("https://www.baidu.com")
        insert_img(driver, '../images/admin.png')
        driver.quit()
    

    八、测试报告通过邮件发送

    1、SMTP是简单邮件传输协议,它是一组用于由源地址到目的地址传送邮件的规则,由它来控制信件的中转方式
    2、Python的smtplib 模块提供了一种很方便的途径用来发送电子邮件。可以使用SMTP对象的sendmail方法发送邮件
    3、发送邮件

    smtp = smtplib.SMTP_SSL(mailserver, port=465)  # 非QQ邮箱,一般使用SMTP即可,不需要有SSL
        smtp.login(userName_SendMail, userName_AuthoCode)
        smtp.sendmail(userName_SendMail, received_mail, msg.as_string())
        smtp.quit()
        send_email(new_report_addr)
    
    邮件里面的测试报告.png

    九、jenkins部署

    1、 安装三个插件:Startup Trigger、Groovy、HTML Publisher
    2、项目-Configure- Build进行配置


    3951676368657_.pic.jpg

    3、生成一个HTML Report


    image.png
    image.png

    相关文章

      网友评论

          本文标题:Selenium+Python web端自动化

          本文链接:https://www.haomeiwen.com/subject/eccskdtx.html