- 论坛徽章:
- 0
|
最近写了一个小的测试项目,其中用到了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()
|
|