美文网首页美文共赏
python+selenium+hytest印章模块项目实战源码

python+selenium+hytest印章模块项目实战源码

作者: DD丿 | 来源:发表于2021-12-03 13:36 被阅读0次

一、项目结构

pythonProject项目>cases(存放用例文件夹)>lib(存放公共代码库-初始化登录)

二、yz01用例文件代码

# -*- coding: utf-8 -*-

# 对应lib套件下的cmtclogin文件中 声明的cmtc_login方法

from timeimport sleep

# from selenium.webdriver.common.by import By

import pyautogui

import win32com.client

from hytestimport *

from hytestimport STEP, INFO

from selenium.webdriverimport ActionChains

from selenium.webdriver.common.keysimport Keys

from lib.cmtclg_djj01import cmtc_login

import xlrd

import random

import string

'''印章申请:标准'''

# 参数化印章名称

'''cmtc_yz1,cmtc_yz4,cmtc_yz5需要改参数=csh变量的参数'''

csh= 'DDautotest30'

# 初始化方法套件setup登录,无需self参数(djj01)

# wd调用lib/cmtclogin中cmtc_login

def suite_setup():

    cmtc_login()

# 套件清除方法    如果底下class用例有多个且之间具有数据依赖性,需要在顶部加套件初始化

# 防止获取不到数据元素

def suite_teardown():

    wd= GSTORE['wd']

    wd.quit()

class cmtc_yz01:

    name= '印章申请'

    tags= ['yz01']

    # 测试用例开始执行

    def teststeps(self):

        # 从lib cmtclogin中取出gstore方法中的wd变量

        wd= GSTORE['wd']

        INFO("跳转到" + wd.title+ "平台")

        STEP(1, '印章申请')

        wd.implicitly_wait(10)

        yzgl= wd.find_element_by_css_selector('div#app div:nth-child(6) > li')

        yzgl.click()

        yzcx= wd.find_element_by_css_selector('div#app div:nth-child(1) > a > li')

        yzcx.click()

        sleep(2)

        # 分页50/页

        wd.find_element_by_css_selector('div#app span.el-pagination__sizes > div > div > input').click()

        sleep(2)

        wd.find_element_by_xpath('/html/body/div[2]/div[1]/div[1]/ul/li[4]/span').click()

        sleep(1)

        # 查询自动化印章

        wd.find_element_by_xpath(

            '/html/body/div[1]/div/div[2]/section/div[2]/form/div[1]/div/div/input').send_keys(csh)

        wd.find_element_by_xpath(

            '/html/body/div[1]/div/div[2]/section/div[2]/form/div[4]/div/button[1]/span').click()

        sleep(2)

        # 获取当前页面的源码并断言

        pagesource= wd.page_source

# print("数据类型为:")

# print(type(pagesource))

        # 好像获取到的源码就是gbk格式,不需要下面转成gbk格式,因此注释掉了下面那句

        # print(pagesource.encode("gbk",ignore))

        # 获取某些关键字在源码中的数量

        # 等待时间获取最全页面源码

        wd.implicitly_wait(10)

        INFO("新增印章前页面关键字数量为:%d" % +pagesource.count(csh))

        # 新增印章申请按钮

        wd.implicitly_wait(20)

        sleep(2)

        xz= wd.find_element_by_css_selector(

            'div#app div.mb8.el-row > div:nth-child(1) > button[type="button"]')

        xz.click()

        wd.implicitly_wait(10)

        # 印章名称

        wd.find_element_by_xpath(

            '/html/body/div[1]/div/div[2]/section/div[2]/form[2]/div[1]/div/div[1]/input').send_keys(csh)

        wd.find_element_by_xpath(

            '/html/body/div[1]/div/div[2]/section/div[2]/form[2]/div[2]/div/div[1]/input').send_keys('2021-12-25')

        wd.find_element_by_xpath(

            '/html/body/div[1]/div/div[2]/section/div[2]/form[2]/div[3]/div/div/div/input').click()

        wd.implicitly_wait(10)

        wd.find_element_by_xpath('/html/body/div[3]/div[1]/div[1]/ul/li[1]/span').click()

        # 印章保管人

        wd.find_element_by_css_selector(

            'div#app div:nth-child(4) > div > div > div > input').click()

        wd.implicitly_wait(10)

        wd.find_element_by_xpath(

            '/html/body/div[4]')

        wd.find_element_by_xpath(

            '/html/body/div[4]/div[1]/div[1]/ul/li[3]/span').click()

        wd.execute_script('window.scrollTo(0,document.body.scrollHeight)')

        sleep(2)

        # 上传文件

        wd.find_element_by_css_selector(

            'div#app div.el-upload.el-upload--picture > button[type="button"] > span').click()

        sleep(2)

        pyautogui.write(r'C:\cover.jpg')

        pyautogui.press('enter', 2)

        # 上传文件时等待时间

        sleep(5)

        pic= wd.find_element_by_css_selector(

            'div#app li > a')

        INFO('印章图片为:' + pic.text)

        try:

            assert u"cover.jpg" in pic.text

INFO("印章图片上传成功")

        except:

            INFO("印章图片上传失败")

        # 向下滑动800个像素

        wd.execute_script("window.scrollBy(0,500)")

        sleep(1)

        wd.find_element_by_xpath(

            '/html/body/div[1]/div/div[2]/section/div[2]/form[2]/div[7]/div/div/textarea').send_keys(csh+ '自动化备注')

        wd.find_element_by_css_selector(

            'div#app button[type="button"].el-button.el-button--primary.el-button--medium').click()

        INFO('印章新增成功')

        sleep(5)

        STEP(2, '印章查询')

        # 分页50/页

        wd.find_element_by_css_selector('div#app span.el-pagination__sizes > div > div > input').click()

        sleep(2)

        wd.find_element_by_xpath('/html/body/div[2]/div[1]/div[1]/ul/li[4]/span').click()

        sleep(2)

        # 查询自动化印章

        wd.find_element_by_xpath(

            '/html/body/div[1]/div/div[2]/section/div[2]/form/div[1]/div/div/input').send_keys(csh)

        wd.find_element_by_xpath(

            '/html/body/div[1]/div/div[2]/section/div[2]/form/div[4]/div/button[1]/span').click()

        # 导出印章报表

        # exp = wd.find_element_by_xpath(

#    "/html/body/div[1]/div/div[2]/section/div[2]/div[1]/div[3]")

# exp.find_element_by_xpath(

        #    "//span[contains(text(), '导出印章报表')]").click()

# sleep(1)

# wd.find_element_by_xpath(

#    "/html").send_keys(Keys.ENTER)

        sleep(5)

        # 查询印章页面截屏,会自动加入测试报告中

        # 第1个参数是 webdriver 对象

        # width 参数为可选参数, 指定图片显示宽度

        SELENIUM_LOG_SCREEN(wd, width='50%')

        sleep(2)

        # 获取当前页面的源码并断言

        pagesource= wd.page_source

# print("数据类型为:")

# print(type(pagesource))

        # 好像获取到的源码就是gbk格式,不需要下面转成gbk格式,因此注释掉了下面那句

        # print(pagesource.encode("gbk",ignore))

        # 获取某些关键字在源码中的数量

        wd.implicitly_wait(10)

        # 设置等待时间获取最全页面源码

        INFO("新增印章后页面关键字数量为:%d" % +pagesource.count(csh))

        try:

            assert cshin pagesource, "页面中存在" + csh+ "关键字"

        except:

            INFO("页面中不存在自动化印章关键字", "\n")

三、lib库登录代码

from timeimport sleep

from hytestimport *

from hytestimport INFO

from seleniumimport webdriver

# 我们在创建 WebDriver 对象后,把它存到了 hytest 全局存储对象 GSTORE 中。 方便其他的代码 获取。

# 公共代码‘登录’放入lib库中

# 声明open_browser对象 打开浏览器

from selenium.webdriver.common.byimport By

# 键盘操作

from selenium.webdriver.common.keysimport Keys

def cmtc_login():

    INFO('初始化登录:djj01')

    # 创建浏览器对象wd/调用驱动打开chrome

    wd= webdriver.Chrome(r'c:\webdrivers\chromedriver.exe')

    # 浏览器最大化

    wd.get_window_size()

    wd.maximize_window()

    # 打开CMTC平台

    wd.get('http://xxxxxx')

    wd.implicitly_wait(10)

    # 账号全选退格删除

    wd.find_element_by_xpath("/html/body/div/div/form/div[1]/div/div[1]/input").send_keys(Keys.CONTROL, 'a')

    sleep(1)

    wd.find_element_by_xpath("/html/body/div/div/form/div[1]/div/div[1]/input").send_keys(Keys.BACKSPACE)

    sleep(1)

    wd.find_element_by_xpath("/html/body/div/div/form/div[1]/div/div[1]/input").send_keys('djj01')

    # 密码全选退格删除

    wd.find_element_by_xpath("/html/body/div/div/form/div[2]/div/div/input").send_keys(Keys.CONTROL, 'a')

    sleep(1)

    wd.find_element_by_xpath("/html/body/div/div/form/div[2]/div/div/input").send_keys(Keys.BACKSPACE)

    sleep(1)

    wd.find_element_by_xpath("/html/body/div/div/form/div[2]/div/div/input").send_keys('123456')

    sleep(1)

    # 登录

    wd.find_element(By.CSS_SELECTOR, ".el-button > span > span").click()

    wd.implicitly_wait(10)

    # 通过回车键替代点击操作

    # wd.find_element_by_id("su").send_keys(Keys.ENTER)

    # 以下代码表示将上方变量wd存入GSTORE对象中方便调用 存入是GSTORE在前

    GSTORE['wd'] = wd

四、yz01~10测试报告

相关文章

网友评论

    本文标题:python+selenium+hytest印章模块项目实战源码

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