Использование сгенерированного кода QtDesigner для установки переменных для другого фрагмента кода - PullRequest
0 голосов
/ 01 мая 2020

Я сгенерировал фрагмент кода с помощью QtDesigner и хотел бы сохранить пользовательские входные данные в QLineEdit в качестве переменных, которые будут использоваться в качестве логина и пароля для ввода сценария селен.

Код выглядит следующим образом:

from PyQt5 import QtCore, QtGui, QtWidgets
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

class Ui_MainWindow(object):

    def setupUi(self, MainWindow):
        MainWindow.setObjectName("MainWindow")

        self.btn_sicaf = QtWidgets.QPushButton(self.frame)
        self.btn_sicaf.setGeometry(QtCore.QRect(20, 60, 161, 41))
        self.btn_sicaf.setObjectName("btn_sicaf")
        self.btn_sicaf.clicked.connect(lambda: SICAF())

        self.campo_cpf = QtWidgets.QLineEdit(self.frame_2)
        self.campo_cpf.setGeometry(QtCore.QRect(90, 60, 191, 21))
        self.campo_cpf.setObjectName("campo_cpf")
        cpf = self.campo_cpf.text()

        self.campo_senha = QtWidgets.QLineEdit(self.frame_2)
        self.campo_senha.setGeometry(QtCore.QRect(90, 90, 191, 21))
        self.campo_senha.setObjectName("campo_senha")
        senha = self.campo_senha.text()

    def retranslateUi(self, MainWindow):
        self.btn_sicaf.setText(_translate("MainWindow", "SICAF"))

cpf = Ui_MainWindow.setupUi(self.campo_cpf.text())
senha = Ui_MainWindow.setupUi(self.campo_senha.text())

def SICAF(): 
    driver = webdriver.Chrome() 
    wait = WebDriverWait(driver, 10) 
    driver.get("https://www3.comprasnet.gov.br/sicaf-web/index.jsf") 
    wait.until(EC.element_to_be_clickable((By.ID, "formLogin:txtCpf"))) 
    wait.until(EC.element_to_be_clickable((By.ID, "formLogin:txtSenha"))) 
    campo_cpf = driver.find_element_by_id("formLogin:txtCpf").send_keys(cpf) 
    campo_senha = driver.find_element_by_id("formLogin:txtSenha").send_keys(senha)

if __name__ == "__main__":
    import sys
    app = QtWidgets.QApplication(sys.argv)
    MainWindow = QtWidgets.QMainWindow()
    ui = Ui_MainWindow()
    ui.setupUi(MainWindow)
    MainWindow.show()
    sys.exit(app.exec_())

Однако я не могу найти способ сохранить self.campo_cpf.text () и self.campo_senha.text () в качестве переменных и экспортировать их в мои функции. Я попытался оставить сценарий селена в другом файле python и импортировать его функции, в то же время передавая новые значения переменной в этом отдельном файле python (сценарий селена), но также не получилось.

Я пытался превратить сценарий селена в метод класса Ui_MainWindow, но мне не удалось вписать сценарий в класс.

Запустив код, как есть, я получаю эту ошибку трассировки:

File "C:/Users/vinic/PycharmProjects/Gestão de estoque/teste.py", line 30, in <module>
    cpf = Ui_MainWindow.setupUi(self.campo_cpf.text())
NameError: name 'self' is not defined
...