zoukankan      html  css  js  c++  java
  • 【原创】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))


  • 相关阅读:
    到底什么时候才需要在ObjC的Block中使用weakSelf/strongSelf
    陀螺仪、加速计和磁力计
    UIImage加载图片的方式以及Images.xcassets对于加载方法的影响
    Java-Jdbc
    3.1 基本数据类型
    第三章 数据类型和变量
    2.2.4 给java应用打包
    2.2.3 运行java程序
    2.2.2 编译java源文件
    2.2.1 jdk简介
  • 原文地址:https://www.cnblogs.com/huangxiaocheng/p/13847817.html
Copyright © 2011-2022 走看看