Я сгенерировал фрагмент кода с помощью 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