來(lái)需求了。。干活啦。。
需求內(nèi)容
部分時(shí)候由于緩存刷新、驗(yàn)證碼顯示不出來(lái)或者瀏覽器打不開(kāi)或者打開(kāi)速度很慢等原因,導(dǎo)致部分測(cè)試同事不想使用瀏覽器登錄服務(wù)器執(zhí)行命令。 期望有小工具可以替代登錄瀏覽器的操作,直接發(fā)送指令到服務(wù)器執(zhí)行并將執(zhí)行結(jié)果返回。
需求設(shè)計(jì)
1、開(kāi)發(fā)界面,方便用戶輸入IP、用戶名、密碼以及執(zhí)行的命令。
2、IP、用戶名、密碼和命令輸入提供默認(rèn)值。特別是用戶名和密碼,對(duì)于測(cè)試服務(wù)器來(lái)說(shuō),通常都是固定的。
3、IP、命令行輸入框可以自動(dòng)補(bǔ)全用戶輸入。自動(dòng)補(bǔ)全常用IP、命令行可以提高操作效率。
4、可以自動(dòng)保存用戶執(zhí)行成功的IP、命令行。用于完善自動(dòng)補(bǔ)全命令(本文代碼未實(shí)現(xiàn))。
需求設(shè)計(jì)
1、使用Qt Designer實(shí)現(xiàn)界面開(kāi)發(fā)。開(kāi)發(fā)后界面參考如下:
2、使用socket程序登錄服務(wù)器并執(zhí)行命令,并將結(jié)果顯示在界面文本框中。
代碼實(shí)現(xiàn)(程序可以直接復(fù)制運(yùn)行)
1、使用Qt Designer實(shí)現(xiàn)界面開(kāi)發(fā)。拖動(dòng)4個(gè)label+4個(gè)輸入框+1個(gè)按鈕+1個(gè)textBrowser到主界面。開(kāi)發(fā)后界面同需求設(shè)計(jì)中的截圖。
2、使用pyuic5 -o commandtools.py commandtools.ui指令將.ui文件轉(zhuǎn)換成.py文件。
# -*- coding: utf-8 -*-# Form implementation generated from reading ui file 'commandTools.ui'## Created by: PyQt5 UI code generator 5.11.3## WARNING! All changes made in this file will be lost!from PyQt5 import QtCore, QtGui, QtWidgetsclass Ui_Form(object): def setupUi(self, Form): Form.setObjectName("Form") Form.resize(483, 347) self.ip_label = QtWidgets.QLabel(Form) self.ip_label.setGeometry(QtCore.QRect(30, 20, 16, 16)) font = QtGui.QFont() font.setBold(True) font.setWeight(75) self.ip_label.setFont(font) self.ip_label.setObjectName("ip_label") self.ip_lineEdit = QtWidgets.QLineEdit(Form) self.ip_lineEdit.setGeometry(QtCore.QRect(50, 20, 101, 20)) self.ip_lineEdit.setObjectName("ip_lineEdit") self.username_label = QtWidgets.QLabel(Form) self.username_label.setGeometry(QtCore.QRect(160, 20, 61, 16)) font = QtGui.QFont() font.setBold(True) font.setWeight(75) self.username_label.setFont(font) self.username_label.setObjectName("username_label") self.username_lineEdit = QtWidgets.QLineEdit(Form) self.username_lineEdit.setGeometry(QtCore.QRect(220, 20, 71, 20)) self.username_lineEdit.setObjectName("username_lineEdit") self.password_label = QtWidgets.QLabel(Form) self.password_label.setGeometry(QtCore.QRect(300, 20, 61, 16)) font = QtGui.QFont() font.setBold(True) font.setWeight(75) self.password_label.setFont(font) self.password_label.setObjectName("password_label") self.password_lineEdit = QtWidgets.QLineEdit(Form) self.password_lineEdit.setGeometry(QtCore.QRect(360, 20, 80, 20)) self.password_lineEdit.setObjectName("password_lineEdit") self.command_label = QtWidgets.QLabel(Form) self.command_label.setGeometry(QtCore.QRect(30, 70, 51, 16)) font = QtGui.QFont() font.setBold(True) font.setWeight(75) self.command_label.setFont(font) self.command_label.setObjectName("command_label") self.command_lineEdit = QtWidgets.QLineEdit(Form) self.command_lineEdit.setGeometry(QtCore.QRect(90, 70, 251, 20)) self.command_lineEdit.setObjectName("command_lineEdit") self.result_textBrowser = QtWidgets.QTextBrowser(Form) self.result_textBrowser.setGeometry(QtCore.QRect(30, 120, 410, 201)) self.result_textBrowser.setObjectName("result_textBrowser") self.run_Button = QtWidgets.QPushButton(Form) self.run_Button.setGeometry(QtCore.QRect(360, 70, 80, 23)) self.run_Button.setObjectName("run_Button") self.retranslateUi(Form) QtCore.QMetaObject.connectSlotsByName(Form) def retranslateUi(self, Form): _translate = QtCore.QCoreApplication.translate Form.setWindowTitle(_translate("Form", "cmdTool")) self.ip_label.setText(_translate("Form", "IP")) self.ip_lineEdit.setText(_translate("Form", "127.0.0.1")) self.username_label.setText(_translate("Form", "username")) self.username_lineEdit.setText(_translate("Form", "admin")) self.password_label.setText(_translate("Form", "password")) self.password_lineEdit.setText(_translate("Form", "Winovs12!")) self.command_label.setText(_translate("Form", "Command")) self.command_lineEdit.setText(_translate("Form", "LST LOG")) self.run_Button.setText(_translate("Form", "Run"))
新聞熱點(diǎn)
疑難解答