忘记密码   免费注册 查看新帖 |

ChinaUnix.net

  平台 论坛 博客 文库 频道自动化运维 虚拟化 储存备份 C/C++ PHP MySQL 嵌入式 Linux系统
最近访问板块 发新帖
查看: 1343 | 回复: 0

TK模块使用实例 [复制链接]

论坛徽章:
0
发表于 2017-12-25 16:29 |显示全部楼层
最近写了一个小的测试项目,其中用到了TK这个模块,记录如下:

用到了 entry, button, label, listbox,

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

from selenium import webdriver
import time
from Tkinter import *
import Tkinter as ttk
from tkMessageBox import showwarning
import os
import re
from selenium.webdriver.common.by import By
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.support.ui import Select
import sys
reload(sys)
sys.setdefaultencoding('utf8')

#
# GUI导入参数
#
def test_GUI():
    win = ttk.Tk()
    win.title("自动化WEB测试脚本")
              
    #
    # button被点击之后会被执行
    #
    def clickMe():
        if(len(web_address.get()) == 0 or len(usrname.get()) == 0 or len(password.get()) ==0):
            showwarning(title='错误', message = '网址,用户名,密码不能为空')
        elif (len(Excel_txt.get()) == 0 or common.isFolder(Excel_txt.get()) != True):
            showwarning(title='错误', message = '输入的路径不合法或者该目录为空')
            Excel_txt.delete(0, len(Excel_txt.get()))
            Excel_txt.focus()
            
        elif (len(queryTime.get()) == 0 or common.isVaildDate(queryTime.get()) != True):
            showwarning(title='错误', message = '输入的时间格式不对,请重新输入!')
            queryTime.delete(0, len(queryTime.get()))
            queryTime.focus()
            
        elif (len(timeWait.get()) == 0 or timeWait.get().isdigit() != True or type(eval(timeWait.get())) != int):
            showwarning(title='错误', message = '只能输入正整数,请重新输入!')
            timeWait.delete(0, len(timeWait.get()))
            timeWait.focus()
            
        else:
            global_list.folder_Excel         = Excel_txt.get()
            global_list.time_Query           = queryTime.get()
            global_list.time_Waiting         = int(timeWait.get())
            global_list.language_Choosen     = radVar.get()
            global_list.web_address          = web_address.get()
            global_list.web_usrname          = usrname.get()
            global_list.web_passwd           = password.get()
            
               
            if(len(global_list.menus_two) > 0):
                for tmp_menu in global_list.menus_two:
                    logger.info(tmp_menu.encode('gbk'))
                    
    def generateR():
        print "Analyze Results"

    def getTopMenu():
        if(len(web_address.get()) == 0 or len(usrname.get()) == 0 or len(password.get()) ==0):
            showwarning(title='错误', message = '网址,用户名,密码不能为空')
        else:
            v.set('双击需要测试目录 -- >>')

    #
    # 文本框
    #
    ttk.Label(win, text="网站http地址 :").grid(column=0, row=2, sticky=E)
    ttk.Label(win, text="网站地址。 例如:http://192.168.0.242:8003/index_nm.html").grid(column=3, row=2, sticky=W)
   
    ttk.Label(win, text="用户名 :").grid(column=0, row=3, sticky=E)
    ttk.Label(win, text="用户名").grid(column=3, row=3, sticky=W)
   
    ttk.Label(win, text="密码 :").grid(column=0, row=4, sticky=E)
    ttk.Label(win, text="密码").grid(column=3, row=4, sticky=W)   
   
    ttk.Label(win, text="文件路径 :").grid(column=0, row=5, sticky=E)
    ttk.Label(win, text="Excel文件的目录。 例如:d:\\test\\").grid(column=3, row=5, sticky=W)
   
    ttk.Label(win, text="查询时间 :").grid(column=0, row=6, sticky=E)
    ttk.Label(win, text="必须为如下时间格式:%Y-%m-%d %H:%M:%S。例如:2017-12-06 17:39:00").grid(column=3, row=6, sticky=W)
   
    ttk.Label(win, text="等待时长 :").grid(column=0, row=7, sticky=E)
    ttk.Label(win, text="只能为正整数,单位是 秒(s)。例如:20").grid(column=3, row=7, sticky=W)
   
    ttk.Label(win, text="中文英文 :").grid(column=0, row=8, sticky=E)
   
    ttk.Label(win, text="############################################").grid(column=1, row=10, sticky=W)
    ttk.Label(win, text="点击选择需要测试的二级目录,不选择代表测试全部。").grid(column=2, row=10, sticky=W)
    ttk.Label(win, text="############################################").grid(column=3, row=10, sticky=W)
   
    #
    # 按钮
    #
    action = ttk.Button(win, text="开 始 测 试", command=clickMe, width = 15, height = 2, fg = 'red')     
    action.grid(column=2, row=9)
   
    action = ttk.Button(win, text="解 析 结 果", command=generateR, width = 15, height = 2, fg = 'red')     
    action.grid(column=3, row=9)
   
    v      = StringVar()
    v.set('<< -- 点击得到一级目录')
    action = ttk.Button(win, textvariable=v, command=getTopMenu, width = 20, height = 2)     
    action.grid(column=2, row=100)

    #
    # Entry
    #
    web_address = ttk.StringVar()
    queryTime = ttk.Entry(win, width=50, textvariable=web_address)
    queryTime.grid(column=1, row=2, sticky=W)

    usrname = ttk.StringVar()   
    timeWait = ttk.Entry(win, width=12, textvariable=usrname)  
    timeWait.grid(column=1, row=3, sticky=W)

    password = ttk.StringVar()   
    Excel_txt = ttk.Entry(win, width=12, textvariable=password)  
    Excel_txt.grid(column=1, row=4, sticky=W)   

    Excel_folder = ttk.StringVar()   
    Excel_txt = ttk.Entry(win, width=24, textvariable=Excel_folder)  
    Excel_txt.grid(column=1, row=5, sticky=W)
   
    name_query = ttk.StringVar()
    queryTime = ttk.Entry(win, width=24, textvariable=name_query)
    queryTime.grid(column=1, row=6, sticky=W)

    name_wait = ttk.StringVar()   
    timeWait = ttk.Entry(win, width=24, textvariable=name_wait)  
    timeWait.grid(column=1, row=7, sticky=W)

    #
    # 选择中英文
    #
    Ch_Web = "中文"
    En_Web = "英文"

    radVar = ttk.IntVar()


    Ch_Web = ttk.Radiobutton(win, text=Ch_Web, variable=radVar, value=0, command=clickMe)
    Ch_Web.grid(column=1, row=8, sticky=W)

    En_Web = ttk.Radiobutton(win, text=En_Web, variable=radVar, value=1, command=clickMe)
    En_Web.grid(column=2, row=8, sticky=W)

    #
    # 输出选中的二级目录
    #
    def printList1(event):
        listbox2.delete(0, END)
        for tmp_menu in (global_list.mmap[listbox1.get(listbox1.curselection()).encode('utf-8')]):  
            listbox2.insert(END,tmp_menu)
            
    #
    # 选择需要测试二级目录
    #
    def printList2(event):
        if(listbox2.get(listbox2.curselection()).encode('gbk') not in global_list.menus_two):
            global_list.menus_two.append(listbox2.get(listbox2.curselection()).encode('utf-8'))

    #
    # 选择测试的菜单目录
    #
    def show_msg(*args):  
        indexs = listbox1.curselection()  
        index = int(indexs[0])  
        listbox2.see(index)  
        listbox2.select_set(index)   
   
    #
    # 创建两个Listbox
    #
    listbox1 = ttk.Listbox(win, height=15, width=30, listvariable="", selectmode="browse")  
    listbox2 = ttk.Listbox(win, height=15, width=30, listvariable="", selectmode="extended")  
      
    listbox1.grid(row=100,column=1,padx=(10,5),pady=10)  
    listbox2.grid(row=100,column=3,padx=(5,10),pady=10)  
      
    listbox1.select_set(4)  

    #  
    # 绑定事件
    #   
    listbox1.bind('<Double-Button-1>',printList1)
    listbox2.bind('<Double-Button-1>',printList2)

    #
    # 以下是菜单栏
    #
    def quit():
        win.quit()   
        win.destroy()   
        exit()
        
    menuBar = Menu(win)
    win.config(menu=menuBar)

    fileMenu = Menu(menuBar, tearoff=0)
    menuBar.add_cascade(label="帮助", menu=fileMenu)
    fileMenu.add_command(label="关于")
    fileMenu.add_separator()

    fileMenu.add_command(label="退出", command=quit)

    win.mainloop()  
    # 结束test_GUI()
   
if __name__ == '__main__':

    time_now = time.strftime('%Y%m%d%H%M',time.localtime(time.time()))

    #
    # GUI导入参数
    #
    test_GUI()

您需要登录后才可以回帖 登录 | 注册

本版积分规则

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号 北京市公安局海淀分局网监中心备案编号:11010802020122
广播电视节目制作经营许可证(京) 字第1234号 中国互联网协会会员  联系我们:wangnan@it168.com
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP