• 【原创】python+selenium+ddt+unittest实现web功能自动化测试


    前期准备:

    pip install selenium

    pip install ddt

    以下代码实现内容:

    对页面提交表单时带有特殊字符情况的验证

    # coding=utf-8
    import time
    import unittest
    import ddt
    from selenium import webdriver
    from selenium.webdriver.support.wait import WebDriverWait
    from selenium.webdriver.support import expected_conditions as EC
    
    @ddt.ddt
    class Test_psnickname(unittest.TestCase):
        def setUp(self):
            """启动浏览器"""
            global browser
            browser = webdriver.Chrome()
            browser.get('URL')
            browser.maximize_window()
            browser.find_element_by_xpath('//input[@name="username"]').send_keys('username')
            browser.find_element_by_xpath('//input[@name="password"]').send_keys('password')
            time.sleep(1)
            browser.find_element_by_xpath('//button[@class="el-button el-button--primary"]').click()
            browser.implicitly_wait(10)
            time.sleep(2)
    
        @ddt.data(['abcdefg', '操作成功'], ['ABCDEFG', '操作成功'], ['123456', '操作成功'],
                  ['`', '操作成功'], ['~', '操作成功'], ['!', '操作成功'],
                  ['@', '操作成功'], ['#', '操作成功'], ['$', '操作成功'],
                  ['%', '操作成功'], ['^', '操作成功'], ['&', '操作成功'],
                  ['*', '操作成功'], ['(', '操作成功'], [')', '操作成功'],
                  ['-', '操作成功'], ['_', '操作成功'], ['=', '操作成功'],
                  ['+', '操作成功'], ['[', '操作成功'], [']', '操作成功'],
                  ['{', '操作成功'], ['}', '操作成功'], ['\', '操作成功'],
                  ['|', '操作成功'], [';', '操作成功'], [':', '操作成功'],
                  ["'", '操作成功'], [',', '操作成功'],
                  ['<', '操作成功'], ['.', '操作成功'], ['>', '操作成功'],
                  ['/', '操作成功'], ['?', '操作成功'], ['·', '操作成功'],
                  ['', '操作成功'], ['', '操作成功'], ['……', '操作成功'],
                  ['', '操作成功'], ['', '操作成功'], ['——', '操作成功'],
                  ['', '操作成功'], ['{', '操作成功'], ['', '操作成功'],
                  ['}', '操作成功'], ['', '操作成功'], ['', '操作成功'],
                  ['', '操作成功'], ['', '操作成功'], ['', '操作成功'],
                  ['', '操作成功'], ['', '操作成功'], ['', '操作成功'],
                  ['', '操作成功'], ['', '操作成功'], ['', '操作成功'],
                  ['', '操作成功'], ['Aa测试123?@*&%', '操作成功'], ['测试昵称', '操作成功'])
        @ddt.unpack
        def test_1(self, value, expect_value):
            """验证个人设置内昵称字符的限制"""
            browser.find_element_by_xpath('//div[@class="avatar-wrapper el-dropdown-selfdefine"]').click()
            time.sleep(1)
            locator1 = ('class name', 'el-dropdown-menu__item')
            WebDriverWait(browser, 10).until(EC.presence_of_element_located(locator1))
            browser.find_element_by_xpath('//li[text()="个人设置"]').click()
            locator2 = ('class name', 'header')
            WebDriverWait(browser, 10).until(EC.presence_of_element_located(locator2))
            time.sleep(1)
            browser.find_elements_by_xpath('//input[@class="el-input__inner"]')[1].clear()
            browser.find_elements_by_xpath('//input[@class="el-input__inner"]')[1].send_keys(value)
            browser.find_element_by_xpath('//span[text()="保存"]').click()
            locator3 = ('class name', 'el-message__content')
            WebDriverWait(browser, 10).until(EC.presence_of_element_located(locator3))
            self.assertIsNotNone(browser.find_element_by_xpath('//p[text()="%s"]' % expect_value))
            time.sleep(1)
            self.assertIsNotNone(browser.find_element_by_xpath('//span[text()="%s"]' % value))
    
        def tearDown(self):
            """清除测试环境"""
            time.sleep(1)
            browser.quit()
    
    if __name__ == '__main__':
        unittest.main()

    代码解释:

    selenium负责元素定位,ddt装饰器负责整理特殊字符,以便用一条用例执行完所有测试场景,unittest负责整理测试用例,以及提供setup和teardown方法

    进阶功能:

    1.跳转选项卡

    browser.switch_to.window(browser.window_handles[1])

    2.跳转frame

    browser.switch_to.frame()

    3.显示等待 

    browser.implicitly_wait(10)

    4.隐式等待 

    locator1 = ('class name', 'el-dropdown-menu__item')
    WebDriverWait(browser, 10).until(EC.presence_of_element_located(locator1))


  • 相关阅读:
    Python 面向对象(类与对象)
    修改Centos文 7件夹所在组及权限(不同用户共用一个文件夹)
    CGPoint,CGSize,CGRect
    关于投资币圈的思考和微信群问答干货整理
    数字货币合约交易基础知识
    比特币成长大事记
    健康医疗笔记(四)癌症知识
    ​阿德勒心理学《被讨厌的勇气》一切烦恼皆源于人际关系
    免费学术论文网站Sci-Hub
    数字货币交易所开发笔记3-撮合引擎开发
  • 原文地址:https://www.cnblogs.com/huangxiaocheng/p/13847817.html
Copyright © 2020-2023  润新知