【原创】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))


posted @ 2020-10-20 17:35  laovvvcom  阅读(632)  评论(0编辑  收藏  举报