M
M
Mimoza-232021-01-24 15:03:59
Python
Mimoza-23, 2021-01-24 15:03:59

How to pull variables from one class to another, through inheritance does not work?

There is a login window and an instagram authorization script for selenium, here is the implementation:

from selenium.webdriver.common.keys import Keys
from selenium import webdriver
import time 
import random
from selenium.common.exceptions import NoSuchElementException
from selenium.webdriver.firefox.options import Options
import os
import re
import sys
from PyQt5 import QtCore,QtGui,QtWidgets 
from des import * 

class GUI(QtWidgets.QMainWindow):

    def __init__(self):
        QtWidgets.QTabWidget.__init__(self)
        self.ui = Ui_MainWindow()
        self.ui.setupUi(self)
        self.login = self.ui.lineEdit.text()
        self.auth = self.ui.lineEdit_2.text()
        self.ui.pushButton.clicked.connect(self.go_to)


    def go_to(self):
        self.ui.lineEdit.clear()
        self.ui.lineEdit_2.clear()
        my_bot = InstagramBot(self.login,self.auth)
        my_bot.login()
        self.about_auth.emit()


class InstagramBot(GUI):
    about_auth = QtCore.pyqtSignal()
    username = self.login
    password = self.auth
    def __init__(self,username,password):
    self.username = username
    self.password = password
    options = Options()
    # options.add_argument("--headless")
    self.browser = webdriver.Firefox(options=options)

    def close_browser(self):

        self.browser.close()
        self.browser.quit()

    def login(self):
        browser = self.browser
        browser.get('https://www.instagram.com/')
        time.sleep(random.randrange(4 ,6))

        username_input = browser.find_element_by_name("username") 
        username_input.clear()
        username_input.send_keys(username)

        time.sleep(5)
        password_input = browser.find_element_by_name("password") 
        password_input.clear()
        password_input.send_keys(password)

        password_input = browser.find_element_by_xpath("/html/body/div[1]/
        section/main/article/div[2]/div[1]/div/
        form/div/div[3]/button/div").click()
        time.sleep(10)

if __name__ == '__main__':
    app = QtWidgets.QApplication(sys.argv)
    mywin = GUI()
    mywin.show()
    sys.exit(app.exec_())

But there is no way I can pull out the variables from the go_to function and insert them into the class with the bot for authorization

Answer the question

In order to leave comments, you need to log in

1 answer(s)
M
Mimoza-23, 2021-01-24
@Mimoza-23

Here is the updated code

from selenium.webdriver.common.keys import Keys
from selenium import webdriver
import time 
import random
from selenium.common.exceptions import NoSuchElementException
from selenium.webdriver.firefox.options import Options
import os
import re
import sys
from PyQt5 import QtCore,QtGui,QtWidgets 
from des import * 

class InstagramBot():
    def __init__(self,username,password):
       self.username = username
       self.password = password
       options = Options()
       # options.add_argument("--headless")
       self.browser = webdriver.Firefox(options=options)

    def close_browser(self):

        self.browser.close()
        self.browser.quit()

    def login(self):
        browser = self.browser
        browser.get('https://www.instagram.com/')
        time.sleep(random.randrange(4 ,6))

        username_input = browser.find_element_by_name("username") 
        username_input.clear()
        username_input.send_keys(username)

        time.sleep(5)
        password_input = browser.find_element_by_name("password") 
        password_input.clear()
        password_input.send_keys(password)

        password_input =browser.find_element_by_xpath("/html/body
        /div[1]/section
        /main/article/div[2]/div[1]/div/form/div
        /div[3]/button/div").click()
        time.sleep(10)

class GUI(QtWidgets.QMainWindow):

    def __init__(self):
        QtWidgets.QTabWidget.__init__(self)
        self.ui = Ui_MainWindow()
        self.ui.setupUi(self)
        self.username = self.ui.lineEdit.text()
        self.password = self.ui.lineEdit_2.text()
        self.ui.pushButton.clicked.connect(self.go_to)

    def go_to(self):
        self.ui.lineEdit.clear()
        self.ui.lineEdit_2.clear()
        username = self.username
        password = self.password
        self.inst = InstagramBot(username,password)
        self.inst.login()

    if __name__ == '__main__':
        app = QtWidgets.QApplication(sys.argv)
        mywin = GUI()
        mywin.show()
        sys.exit(app.exec_())

Didn't find what you were looking for?

Ask your question

Ask a Question

731 491 924 answers to any question